有没有人有幸使用加密库在节点js中解密.NET表单身份验证生成的cookie?
我使用AES进行加密,使用SHA1进行.NET表单身份验证机制验证。
我想知道是否有人之前有这个问题并解决了它?
答案 0 :(得分:0)
我玩了这个并为Node.js制作了以下代码:
var crypto = require('crypto');
var iconv = require('iconv-lite');
function hash(password) {
// your validation key from web.config + 00 at the end
var buf = new Buffer('...00', 'hex');
var hmac = crypto.createHmac('sha1', buf);
// convert password from utf8 to UTF16
var pass = iconv.encode(password, 'utf16le');
hmac.update(pass);
return hmac.digest('base64');
}
console.log(hash('test'));
用它来比较数据库中的哈希值。
答案 1 :(得分:0)
这取决于web.config设置。
您可以在此处看到Encryp和Decrypt的源代码,其中包含所有不同的可能性(Framework20SP1,Framework20SP2等)
https://github.com/Microsoft/referencesource/blob/master/System.Web/Security/FormsAuthentication.cs
例如,在Framework20SP1上,cookie看起来像:Enc(IV + SerializedTicket + Modifier)+ HMAC(Enc(IV + SerializedTicket + Modifier))