我正在ESAPI測試基本的東西,我跑過this symmetric encryption tutorial並複製和粘貼代碼(以及導入ESAPI 2.1.0 jar文件,ESAPI.properties和validation.properties' SRC」在Eclipse目錄)從教程ESAPI對稱加密使用JavaEncryptor
修改後的代碼:
import org.owasp.esapi.crypto.CipherText;
import org.owasp.esapi.crypto.PlainText;
import org.owasp.esapi.errors.EncryptionException;
import org.owasp.esapi.reference.crypto.JavaEncryptor;
public class ESAPIsymEncTester {
public static void main(String[] args) throws EncryptionException{
String myplaintext = "My plaintext";
CipherText ciphertext =
JavaEncryptor.getInstance().encrypt(new PlainText(myplaintext));
PlainText recoveredPlaintext = JavaEncryptor.getInstance().decrypt(ciphertext);
assert myplaintext.equals(recoveredPlaintext.toString());
System.out.println("recovered plaintext: " + recoveredPlaintext.toString());
}
}
然而,當我使用Java 1.8運行這個在Eclipse紅月,我得到這個堆棧跟蹤:
Exception in thread "main" org.owasp.esapi.errors.EncryptionException: Encryption failure: Invalid key exception.
at org.owasp.esapi.reference.crypto.JavaEncryptor.encrypt(JavaEncryptor.java:526)
at org.owasp.esapi.reference.crypto.JavaEncryptor.encrypt(JavaEncryptor.java:338)
at com.fate.engine.test.ESAPIsymEncTester.main(ESAPIsymEncTester.java:15)
Caused by: java.security.InvalidKeyException: Invalid AES key length: 96 bytes
at com.sun.crypto.provider.AESCipher.engineGetKeySize(AESCipher.java:495)
at javax.crypto.Cipher.passCryptoPermCheck(Cipher.java:1062)
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1033)
at javax.crypto.Cipher.init(Cipher.java:1367)
at javax.crypto.Cipher.init(Cipher.java:1301)
at org.owasp.esapi.reference.crypto.JavaEncryptor.encrypt(JavaEncryptor.java:504)
... 2 more
我不確定這是否是JavaEncryptor.java代碼中的錯誤,或者我是否從ESAPI.properties文件中提取了某些錯誤配置。
我通過運行JavaEncryptor並複製/粘貼生成的密鑰/鹽來替換主密鑰和鹽。
如果是一個錯誤,我會通過電子郵件發送給ESAPI的工作人員,以澄清我如何解決這個問題,因爲我查看了JavaEncryptor代碼,並沒有完全清楚所有部分來自哪裏。
Encryptor.MasterKey = WppLubGgsc/p6HhvcPf2LA ==
Encryptor.MasterSalt = YokRN9mjMUTZspEbzBY90NA6EC8 =
Encryptor.PreferredJCEProvider =
Encryptor.EncryptionAlgorithm = AES
Encryptor.CipherTransformation = AES/CBC/PKCS5Padding
個Encryptor.cipher_modes.combined_modes = GCM,CCM,IAPM,EAX,OCB,CWC
Encryptor.cipher_modes.additional_allowed = CBC
Encryptor.EncryptionKeyLength = 128
Encryptor.ChooseIVMethod =隨機
Encryptor.fixedIV = 0x000102030405060708090a0b0c0d0e0f
Encryptor.CipherText.useMAC =真
ENCR yptor.PlainText.overwrite =真
Encryptor.HashAlgorithm = SHA-512 *****
Encryptor.HashIterations = 1024
Encryptor.DigitalSignatureAlgorithm =帶DSA的SHA1
Encryptor.DigitalSignatureKeyLength = 1024
Encryptor.RandomAlgorithm = SHA1PRNG
Encryptor.CharacterEncoding = UTF-8
Encryptor.KDF。PRF = HMACSHA1 *****
從esapi.properties中添加了加密器設置。星星是我過去在某些時候調整過的星星。 – adv