我在 cflib.org 上使用 genAESKeyFromPW() 函数已有一段时间了。我现在需要将其转换为纯 Java。我已经问过了,但决定在这里发布,看看我是否也能得到任何答案。
首先,看一下cflib.org 上的genAESKeyFromPW ()。
看着我创建了以下 Java 代码进行测试。
String filename = new String("foo");
String salt = new String(Base64.encodeBase64(filename.getBytes()));
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
PBEKeySpec spec = new PBEKeySpec(filename.toCharArray(),salt.getBytes(), 1024,128);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
System.out.println(new String(Base64.encodeBase64(secret.getEncoded())));
Java 代码返回uJvByU+ArEvtsb+7E1mblw==
调用 genAESKeyFromPW('foo',tobase64('foo')) 返回 7ZX9TKD8WVUlgTtbL/FN8w==
我知道可能存在字符编码问题。我尝试将 UTF8 和其他格式添加到 getBytes(),但还没有找到在 CF 和 Straight Java 中返回相同值的方法。
如果有人能对此有所了解,将不胜感激。