2012-04-13 21 views

Respuesta

6

La API es para crear una firma, un hash SHA1 (como se puede ver en el código al que se vincula). El propósito de esto no es ser reversible (sin firmar) sino ser utilizado como verificación de autenticidad.

Por ejemplo, si ha firmado un token de autenticación, puede asegurarse de que no se haya alterado al marcar Crypto.sign(token) == tokenSignature.

Si desea cifrado y descifrado, consulte Crypto.encryptAES/Crypto.decryptAES (agregado en Play 2.1).

+1

qué beneficio tiene, también podemos verificar por'myString = contraseña' –

+0

Buen punto. He editado la respuesta para mostrar un mejor ejemplo. –

+1

Tenga en cuenta que Crypto.encryptAES es vulnerable a los ataques de maleabilidad a menos que se combine con un MAC para autenticación, porque usa AES-CTR. Lo que probablemente quieras es AES-GCM. 'Crypto' estará obsoleto en 2.5.x y hay una guía de migración para moverlo: https://www.playframework.com/documentation/2.5.x/CryptoMigration25 –

1

¿Qué estás tratando de hacer exactamente? Usted solo firma un valor para asegurarse de que no fue alterado. El punto es que no se puede "eliminar" fácilmente.

Si desea cifrar y descifrar un valor dentro de su aplicación, debe usar un algoritmo de cifrado de javax.crypto.

+0

Gracias por su tiempo, quiero descifrar un nombre de usuario y contraseña, y en juego! 1.2.4 He utilizado la clase Crypto para eso ... Y luego, en el momento de la solicitud, deseo mostrar el nombre de usuario y la contraseña, por lo que necesito descifrarla nuevamente. Pero entiendo que necesito usar clases adicionales para este propósito ... – adis

1

Si necesita la funcionalidad de cifrado/descifrado, puede intentar agregar http://www.jasypt.org/.

org.jasypt.util.text.BasicTextEncryptor permite al usuario cifrar y descifrar datos de texto utilizando un algoritmo de intensidad normal. Para poder cifrar y descifrar.

de lo que puede hacer algo como esto:

... 
BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); 
textEncryptor.setPassword(myEncryptionPassword); 
... 
String myEncryptedText = textEncryptor.encrypt(myText); 
String plainText = textEncryptor.decrypt(myEncryptedText); 
... 
+0

Sí, de hecho me encontré con este :-). Y trataré de usarlo en mi proyecto, gracias de todos modos por compartirlo. – adis

+0

No usaría jasypt, porque inventa su propio cifrado: http://security.stackexchange.com/a/65240 –

Cuestiones relacionadas