Я делаю хеширование из Java и сравниваю с кодом Java Script, используя тот же SHA-256, но результат кажется другим. Кто-нибудь знает, помогите мне с этим, пожалуйста. Вот код ниже.
Код Java
private static final char[] hexArray = "0123456789ABCDEF".toCharArray();
private static String salt = "Apple@987";
private static byte[] saltArr = salt.getBytes();
public static String getSHA256(String data) {
StringBuilder sb = new StringBuilder();
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(saltArr);
byte[] byteData = md.digest(data.getBytes());
sb.append(bytesToHex(byteData));
} catch(Exception e) {
e.printStackTrace();
}
return sb.toString();
}
private static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for ( int j = 0; j < bytes.length; j++ ) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return String.valueOf(hexChars);
}
String hashed = getSHA256("SampleData");
System.out.println("hashed");
Код сценария Java (в почтальоне)
var salt = 'Apple@987';
var data = 'SampleData';
var hash = CryptoJS.HmacSHA256(data, salt).toString(CryptoJS.enc.Hex);
Результат Java:
7B2BBE6DAD962170A83A911EE7B84A382DE2F7FA0DA77C55F99F696EEFAF6C5D
Результат Java Script:
1de0de12c5f22bf98f2dbae8430470cac64875a28a035191c3f783e6a2d6cb3b
SHA256
с Java иHMAC SHA256
с JavaScript (см. security.stackexchange.com/questions/79577/ для различий). Вы также должны использоватьCryptoJS.SHA256
с JavaScript. - person Thomas Kläger   schedule 09.06.2020