我是Scala的新手,我发现这个有趣的单线程从字符串生成十六进制编码的MD5哈希。我希望有人能帮助我更好地理解这一点。
private def getMd5(inputStr: String): String = {
val md: MessageDigest = MessageDigest.getInstance("MD5")
md.digest(inputStr.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft("") {_ + _}
}
感谢。
答案 0 :(得分:2)
这只是这个java代码的模拟,但没有StringBuilder(由你决定)
MessageDigest messageDigest = MessageDigest.getInstance("SHA-512");
String password = "secret";
messageDigest.update(password.getBytes());
byte[] bytes = messageDigest.digest();
StringBuilder stringBuilder = new StringBuilder();
for (byte aByte : bytes) {
stringBuilder.append(Integer.toString((aByte & 0xff) + 0x100, 16).substring(1));
}
System.out.println(stringBuilder.toString());
让我们考虑第二行:
md.digest(inputStr.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft("") {_ + _}