【发布时间】:2018-10-13 03:52:20
【问题描述】:
我正在尝试将 java api 转换为 cd1 api 的加密... 我在java中有这个方法:
private static byte[] encodePassword(String password,String salt) throws UnsupportedEncodingException
{
String mergedPasswordAndSalt =mergePasswordAndSalt(password, salt);
SHA512Digest digester =new SHA512Digest();
byte[] hash = new byte[digester.getDigestSize()];
System.out.println("init hash= "+Base64.encode(hash));
try {
hash = mergedPasswordAndSalt.getBytes("UTF-8");
System.out.println("init merged= "+Base64.encode(hash));
digester.doFinal(hash,0);
System.out.println("after");
} catch (Exception ex) {
System.out.println("Exception");
}
for (int i = 1; i < ITERATIONS; ++i) {
digester.doFinal(Bytes.concat(hash, mergedPasswordAndSalt.getBytes("UTF-8")),0);
}
return hash;
}
我正在尝试以与 MessageDigest(Java 中)相同的方式使用 SHA512Digest:
private static byte[] encodePassword(String password,String salt) throws UnsupportedEncodingException
{
String mergedPasswordAndSalt =mergePasswordAndSalt(password, salt);
SHA512Digest digester =new SHA512Digest();
byte[] hash = null;
try {
hash = mergedPasswordAndSalt.getBytes("UTF-8");
digester.doFinal(mergedPasswordAndSalt.getBytes("UTF-8"),0);
} catch (Exception ex) {
System.out.println("Exception");
}
for (int i = 1; i < ITERATIONS; ++i) {
digester.doFinal(Bytes.concat(hash, mergedPasswordAndSalt.getBytes("UTF-8")),0);
}
return hash;
}
在我的项目中建立了lib,但是doFinal不起作用...我无法将java转换为代号,当我加密的结果返回未被doFinal修改的初始哈希时
init hash= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAA==
init merged= MDAwMHtUZXdSLm1ldE9yTldrV1JTcWVJaHV4ejAvN2ZjeS5HUGIvS1l5c1BybkFZfQ==
Exception
and the method return Sha512{salt='TewR.metOrNWkWRSqeIhuxz0/7fcy.GPb/KYysPrnAY', hash='z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvYw=='}
【问题讨论】:
-
有什么问题?你不说哪里出了问题。
-
我找到了问题,doFinal 没有实现,谢谢
-
doFinal 实现了,你导入正确的包了吗:github.com/codenameone/bouncy-castle-codenameone-lib/blob/…
标签: codenameone sha512 message-digest