sha salt java,C#SHA-256与Java SHA-256.结果不同?

我想将一些

Java中的代码转换为C#.

Java代码:

private static final byte[] SALT = "NJui8*&N823bVvy03^4N".getBytes();

public static final String getSHA256Hash(String secret)

{

try {

MessageDigest digest = MessageDigest.getInstance("SHA-256");

digest.update(secret.getBytes());

byte[] hash = digest.digest(SALT);

StringBuffer hexString = new StringBuffer();

for (int i = 0; i < hash.length; i++) {

hexString.append(Integer.toHexString(0xFF & hash[i]));

}

return hexString.toString();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

throw new RuntimeException("SHA-256 realization algorithm not found in JDK!");

}

当我尝试使用the SimpleHash class时,我得到了不同的哈希值

更新:

例如:

Java:byte [] hash = digest.digest(SALT);

生成(前6个字节):

[0] = 9

[1] = -95

[2] = -68

[3] = 64

[4] = -11

[5] = 53

....

C#代码(类SimpleHash):

string hashValue = Convert.ToBase64String(hashWithSaltBytes);

hashWithSaltBytes有(前6个字节):

[0] 175 byte

[1] 209 byte

[2] 120 byte

[3] 74 byte

[4] 74 byte

[5] 227 byte

String.getBytes method使用平台的默认字符集将字符串编码为字节,而您链接的示例代码使用UTF-8.

试试这个:

digest.update(secret.getBytes("UTF-8"));

其次,Integer.toHexString method返回十六进制结果,没有前导0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值