在我的程序中,我试图用 AES 加密纯文本,至少进行 50 次迭代。但问题是我收到了 OutOfMemory 错误。从帖子中,推荐的迭代次数......我知道 LastPass 使用了 100,000 次迭代。但是我什至不能为 AES 使用 50 次迭代。
这是代码,
static String encrypt(String value, String salt) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGORITHM);
c.init(Cipher.ENCRYPT_MODE, key);
String valueToEnc = null;
String eValue = value;
for (int i = 0; i < 100; i++) {
valueToEnc = salt + eValue;
byte[] encValue = c.doFinal(valueToEnc.getBytes());
eValue = new BASE64Encoder().encode(encValue);
return eValue;
}
我知道 usingBase64Encoder
会发出警告。所以请不要发布有关它的信息。我稍后会改变它。
我的问题是有没有办法增加迭代而不会出现这个错误?
对不起,如果这是一个愚蠢的问题,任何答案表示赞赏。提前致谢。
这是异常日志,
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:300)
at java.lang.StringCoding.encode(StringCoding.java:344)
at java.lang.StringCoding.encode(StringCoding.java:387)
at java.lang.String.getBytes(String.java:956)
这是打印的 valueEnc (只是其中的一部分)
TAtYyypIcW2kGWWKWRM1PWYCgi55hVnUqBv3Ze0c93R8tlUykr22xqeTLesPVlyepJv94ME/5JLQ