我有一段js代码,我需要将其转换为合适的java代码,以便在我的Android应用程序中使用:
toHex(Crypto.util.bytesToBase64(Crypto.SHA1(password, { asBytes: true })));
我发现对于Crypto.util.bytesToBase64()
方法,我可以使用java版本:Base64.encode()
,但我不知道如何在java中调用js CryptoSHA1()
和toHex()
方法。有什么想法吗?
代码使用三个函数:
-
SHA-1摘要
MessageDigest md=MessageDigest.getInstance("SHA-1");byte[]摘要=md.digest(text.getBytes("UTF-8"));
-
基本64
String base64=android.util.base64.encodeToString(摘要)
-
十六进制
使用这样的函数:http://vinnysoft.blogspot.de/2010/11/code-snippet-to-convert-string-to-hex.html
总之,最后一步完全没有必要,只会破坏数据。base64的结果已经是可打印的ASCII字符串。
此外,使用SHA-1散列密码可能不安全,这取决于您对结果的处理方式。通常,密码哈希应该始终包含salting。