使用加密解密字符串

时间:2012-04-13 17:17:55

标签: playframework-2.0

Play Framework 2.0提供了lib 加密,请参阅代码:https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/libs/Crypto.scala

所以如果想签名我可以使用的值:

Crypto.sign(username);

但是如何再次解密用户名?没有方法取消签名解密?或者我在这里遗漏了什么?

3 个答案:

答案 0 :(得分:6)

API用于创建签名,SHA1哈希(如您链接到的代码中所示)。其目的不是可逆的(未签名),而是用作真实性的验证。

例如,如果您已经签署了身份验证令牌,则可以通过检查Crypto.sign(token) == tokenSignature来确保它没有被篡改。

如果您需要加密和解密,请查看Crypto.encryptAES / Crypto.decryptAES(在Play 2.1中添加)。

答案 1 :(得分:1)

你到底想要做什么?您只需签署一个值以确保它不会被更改。关键是你不能轻易地“取消签名”。

如果要加密和解密应用中的值,则必须使用javax.crypto中的加密算法。

答案 2 :(得分:1)

如果您需要加密/解密功能,可以尝试添加http://www.jasypt.org/

org.jasypt.util.text.BasicTextEncryptor允许用户使用常规强度算法加密和解密文本数据。为了能够加密和解密。

你可以做这样的事情:

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