problema di riempimento nella password hash sha-1

0

Per la mia comprensione delle chiavi di Websphere LTPA, sto eseguendo questo codice Java , che funziona correttamente quando si utilizza la codifica Base64 dell'autore, la password con hash SHA1:

String ltpa3DESKey = "IpGJOdpSxV3J8yWAuB+UiUlYCK7sAzSfENE5MLT2q+s=";

ma fallisce quando si utilizza il mio:

String ltpa3DESKey = "ExGKSrGQPGN+q0GE1GlFhK7BB8bLB0mEp9ec1Vzxv8A\=";

Errore:

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \ )

Ma se mi sfugge:

String ltpa3DESKey = "ExGKSrGQPGN+q0GE1GlFhK7BB8bLB0mEp9ec1Vzxv8A\=";

Ottengo:

 javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:991)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:847)
    at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DESedeCipher.java:294)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at com.me.ltpa.LtpaToken.decrypt(LtpaToken.java:79)
    at com.me.ltpa.LtpaToken.getSecretKey(LtpaToken.java:62)
    at com.me.ltpa.LtpaToken.decryptLtpaToken(LtpaToken.java:110)
    at com.me.ltpa.LtpaToken.getInstance(LtpaToken.java:118)
    at com.me.ltpa.LtpaToken.main(LtpaToken.java:139)

Ho letto le basi dell'articolo Base64 di Wikipedia, ma apparentemente i backslash non fanno parte dell'alfabeto Base64. Qualche idea su come procedere?

    
posta mellow-yellow 21.11.2017 - 20:17
fonte

2 risposte

1

Esistono diverse varianti della codifica base64; mentre nessuno di quelli che conosco dovrebbe produrre un \, potrebbe essere meglio usare solo una versione compatibile con URL (che è fatta in java come dice il primo hit di google ).

Obiter Dictum:

  • Di solito non esiste una buona ragione per usare 3DES e non AES. 3DES è stato a lungo sconsigliato.
  • Sha1 non è una buona funzione di derivazione della chiave, per favore usa uno progettato per questo scopo, come PBKDF2 .
risposta data 21.11.2017 - 20:28
fonte
0

Indovina che Java tenta di identificare il \ come un comando nella stringa, come ad es. \ N. Non esiste un comando come \ =, ecco perché appare l'eccezione. Vorrei raccomandarti di inserire // invece di \, altrimenti potresti non usare \ per le tue stringhe.

    
risposta data 21.11.2017 - 23:52
fonte

Leggi altre domande sui tag