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);
但是如何再次解密用户名?没有方法取消签名或解密?或者我在这里遗漏了什么?
答案 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);
...