播放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);
但如何解密的用户名再次?没有方法unsign或解密?或者我在这里错过了什么?
播放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);
但如何解密的用户名再次?没有方法unsign或解密?或者我在这里错过了什么?
该API用于创建签名和SHA1哈希(如您在链接到的代码中所见)。其目的不是可逆的(未签名),而是用作验证真实性。
例如,如果您已经签署了身份验证令牌,则可以通过检查Crypto.sign(token) == tokenSignature
来确保它没有被篡改。
如果您想加密和解密,请查看Crypto.encryptAES
/Crypto.decryptAES
(在Play 2.1中添加)。
你究竟想要做什么?您只需签署一个值以确保它不会被更改。关键是你不能轻易“放弃”它。
如果要在应用程序中加密和解密值,则必须使用javax.crypto
的加密算法。
感谢您的时间,我想解密的用户名和密码,在玩游戏! 1.2.4我已经使用了Crypto类。然后在请求时我想显示用户名和密码,所以我需要再次解密它。但我明白,我需要使用额外的类为此目的... – adis 2012-04-15 09:09:08
如果您需要加密/解密功能,您可以尝试添加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);
...
是的,的确,我碰到过这个:-)。我会尝试在我的项目中使用它,谢谢分享。 – adis 2012-04-18 12:40:25
我不会使用jasypt,因为它发明了自己的加密:http://security.stackexchange.com/a/65240 – 2016-02-29 10:55:59
它的好处是什么,我们还可以通过'myString = password'检查 – 2014-05-14 14:53:50
好点。我编辑了答案以显示更好的示例。 – 2014-12-17 16:25:41
请注意,Crypto.encryptAES容易受到可塑性攻击,除非它与MAC进行身份验证相结合,因为它使用AES-CTR。你可能想要的是AES-GCM。 'Crypto'将在2.5.x中弃用,并且有一个迁移指南,可以将其移除:https://www.playframework.com/documentation/2.5.x/CryptoMigration25 – 2016-02-29 10:54:41