js sha256加密和java,在C#中的sha256加密和js中的sha256加密结果不同

C#自带的类库实现sha265会返回一个byte[] 数组,这个数组的长度是32,

js的sha265是64,是把每个byte直接转换成了2个hex字符串。

C#中加密后是44位是因为把这个数组用base64编码成了字符串。

C#中也直接把byte转换成对应的hex字符串就和js中一样了。

另外,把str转换成byte[]数组的Encoding 如果不同,sha是不同的,一般js的都是utf8。

代码:

public static string SHA256(string str)

{

//如果str有中文,不同Encoding的sha是不同的!!

byte[] SHA256Data = Encoding.UTF8.GetBytes(str);

SHA256Managed Sha256 = new SHA256Managed();

byte[] by = Sha256.ComputeHash(SHA256Data);

return BitConverter.ToString(by).Replace("-", "").ToLower(); //64

//return Convert.ToBase64String(by);                         //44

}

static void Main(string[] args)

{

string s = "hello world";

//sha265=b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

string sha = SHA256(s);

Console.WriteLine("{0}\n{1} \nLength: {2}",s, sha, sha.Length);

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值