2012-04-13 234 views

回答

6

該API用於創建簽名和SHA1哈希(如您在鏈接到的代碼中所見)。其目的不是可逆的(未簽名),而是用作驗證真實性。

例如,如果您已經簽署了身份驗證令牌,則可以通過檢查Crypto.sign(token) == tokenSignature來確保它沒有被篡改。

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

+1

它的好處是什麼,我們還可以通過'myString = password'檢查 – 2014-05-14 14:53:50

+0

好點。我編輯了答案以顯示更好的示例。 – 2014-12-17 16:25:41

+1

請注意,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

1

你究竟想要做什麼?您只需簽署一個值以確保它不會被更改。關鍵是你不能輕易「放棄」它。

如果要在應用程序中加密和解密值,則必須使用javax.crypto的加密算法。

+0

感謝您的時間,我想解密的用戶名和密碼,在玩遊戲! 1.2.4我已經使用了Crypto類。然後在請求時我想顯示用戶名和密碼,所以我需要再次解密它。但我明白,我需要使用額外的類爲此目的... – adis 2012-04-15 09:09:08

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); 
... 
+0

是的,的確,我碰到過這個:-)。我會嘗試在我的項目中使用它,謝謝分享。 – adis 2012-04-18 12:40:25

+0

我不會使用jasypt,因爲它發明了自己的加密:http://security.stackexchange.com/a/65240 – 2016-02-29 10:55:59