problema de relleno en la contraseña hash sha-1

0

Para mi propio entendimiento de las claves LTPA de Websphere, estoy ejecutando este código Java , que funciona correctamente cuando se utiliza la codificación codificada en Base64 del autor, SHA1 hash password:

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

pero falla al usar el mío:

String ltpa3DESKey = "ExGKSrGQPGN+q0GE1GlFhK7BB8bLB0mEp9ec1Vzxv8A\=";

error:

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

Pero si me escapo:

String ltpa3DESKey = "ExGKSrGQPGN+q0GE1GlFhK7BB8bLB0mEp9ec1Vzxv8A\=";

me sale:

 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)

He leído los conceptos básicos del artículo de Wikipedia de Base64, pero aparentemente las barras invertidas no forman parte del alfabeto Base64. ¿Alguna idea sobre cómo proceder?

    
pregunta mellow-yellow 21.11.2017 - 20:17
fuente

2 respuestas

1

Hay diferentes variantes de codificación base64; aunque ninguno de los que conozco debería producir un \, es mejor que uses una versión compatible con URL (que se hace en java como dice el primer hit de Google ).

Dictum Obiter:

  • Generalmente no hay una buena razón para usar 3DES y no AES. 3DES ha sido desaprobado por mucho tiempo.
  • Sha1 no es una buena función de derivación de clave, utilice una que esté diseñada para este propósito, como PBKDF2 .
respondido por el Tobi Nary 21.11.2017 - 20:28
fuente
0

Adivina que Java intenta identificar \ como un comando en la Cadena, como p. ej. \norte. No hay un comando como \ =, por eso aparece la excepción. Le recomendaría que pusiera un poco de // en lugar de \, de lo contrario no usaría el \ para sus cadenas.

    
respondido por el Dr3xler 21.11.2017 - 23:52
fuente

Lea otras preguntas en las etiquetas