在尝试将 HMACSHA256(散列)集成到不同的编程语言中时,我遇到了一个问题。我尝试使用 Java 和 C# 中的标准预定义方法来实现标准算法,并且我在不同的语言中得到了不同的结果。请参阅下面我在 Java 和 C# 中的实现:
爪哇:
public static String convertSHAWithSalt(String value, String salt)
throws NoSuchAlgorithmException, InvalidKeyException {
String data = "";
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(salt.getBytes(StandardCharsets.UTF_8));
byte[] bytes = md.digest(value.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
}
data = sb.toString();
System.out.println(data);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
字符串值“abcd”和空盐值的结果:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589
C#:
public static string createHash(string message, string secret)
{
byte[] keyByte = System.Text.Encoding.UTF8.GetBytes(secret);
byte[] messageBytes = System.Text.Encoding.UTF8.GetBytes(message);
HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return BitConverter.ToString(hashmessage).Replace("-", "").ToLower();
}
字符串值“abcd”和空盐值的结果:527ff4c28c22a090fe39908139363e81b8fb10d0695a135518006abfa21cf5a2
杨__羊羊
Qyouu
随时随地看视频慕课网APP
相关分类