具有SHA-256差异结果的Java和JavaScript哈希

问题描述 投票:0回答:1

我从Java进行哈希处理,并使用相同的SHA-256与Java脚本代码进行比较,但结果似乎有所不同。有人知道吗请帮我。这是下面的代码。

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脚本结果:

1de0de12c5f22bf98f2dbae8430470cac64875a28a035191c3f783e6a2d6cb3b
javascript java cryptojs
1个回答
1
投票

Javascript结果(1de0de12c5f22bf98f2dbae8430470cac64875a28a035191c3f783e6a2d6cb3b)是正确的,请在此link中进行检查

Java代码,您可以参考此link

String key = "Apple@987";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
sha256_HMAC.init(new SecretKeySpec(key.getBytes(), "HmacSHA256"));
byte[] result = sha256_HMAC.doFinal("SampleData".getBytes());
System.out.println (DatatypeConverter.printHexBinary(result));

javascript代码:

var result = crypto.createHmac('SHA256', 'Apple@987').update('SampleData').digest('hex')
console.log(result)

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.