Tôi đã tạo một cookie được mã hóa trong .Net và tôi đang cố gắng giải mã nội dung của nó trong các nút. Nhưng nodejs giữ ném ngoại lệ "Lỗi Loại: DecipherFinal thất bại"Giải mã .Net cookie trong nodejs
Trong Net Tôi đang sử dụng phương pháp mã hóa AES với khóa
932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC.
file web.config của tôi có hàng sau
<machineKey validationKey="A5326FFC9D3B74527AECE124D0B7BE5D85D58AFB12AAB3D76319B27EE57608A5A7BCAB5E34C7F1305ECE5AC78DB1FFEC0A9435C316884AB4C83D2008B533CFD9"
decryptionKey="932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC"
validation="SHA1" decryption="AES" />
Và mã mà tạo ra cookie của tôi trong Net trông như thế này:
var ticket = new FormsAuthenticationTicket(0, "test", DateTime.Now, DateTime.Now.AddYears(1), true, "test");
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(cookieName, encryptedTicket));
Mã nodejs để giải mã các tập tin cookie là
var crypto = require('crypto');
var logger = require('winston');
var deckey = "932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC";
function hex2a(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
function decrypt(cookie) {
var ivc = cookie, iv, cipherText, ivSize = 16, res;
ivc = new Buffer(ivc, 'hex');
iv = new Buffer(ivSize);
cipherText = new Buffer(ivc.length - ivSize);
ivc.copy(iv, 0, 0, ivSize);
ivc.copy(cipherText, 0, ivSize);
iv = new Buffer(Array(16));
c = crypto.createDecipheriv('aes-256-cbc', hex2a(deckey), iv.toString());
res = c.update(cipherText, 'binary');
res += c.final('binary'); //<-- throws TypeError: DecipherFinal fail
return res;
}
tôi là loại bị mất và tôi sẽ đánh giá cao lời khuyên hay ý tưởng về những gì có thể vấn đề này.
Bạn có tài nguyên cho bạn biết loại mã hóa nào được thực hiện trong 'FormsAuthentication.Encrypt()'? Microsoft ** một lần nữa ** không xác định đầu ra thực tế của phương thức. –
Tôi đã gặp vấn đề tương tự gần đây, chống lại .Net 4.5. Có ai đã thực hiện tiến trình giải mã cookie trong nút không? – JasonB
@JasonB Tôi đã trả lời [một câu hỏi rất giống] (http://stackoverflow.com/q/34882672/5128464) - có thể thú vị cho bạn. – vlp