crypto-js的HAMCSHA1加密与C#的区别
在做一个WEB项目,浏览器端用HMACSHA1加密然后传给服务端,以保证客户端请求的有效性。
项目中浏览器端用了 crypto-js http://code.google.com/p/crypto-js/
服务端直接使用 System.Security.Cryptography.HMACSHA1
但是两者加密出来的结果不一致。
js的代码如下:
<script type="text/javascript" src="/Scripts/Crypto-JS/crypto-sha1-hmac/crypto-sha1-hmac.js"></script>
<script type="text/javascript">
var message = "test";
var key = "dddd";
var hmacBytes = Crypto.HMAC(Crypto.SHA1, message, key, { asBytes: true });
var hmacString = Crypto.util.bytesToBase64(hmacBytes);
</script>
C#的代码如下:
byte[] keys = Encoding.UTF8.GetBytes("ddd");
byte[] message = Encoding.UTF8.GetBytes("test");
System.Security.Cryptography.HMACSHA1 cryp = new System.Security.Cryptography.HMACSHA1(keys);
cryp.Initialize();
byte[] hashedbytes = cryp.ComputeHash(message);
string hashedstring = Convert.ToBase64String(hashedbytes);
最后两者得出结果完全不同。
请问他们的差别在哪里?
或者我的用法错了?