Utworzyłem zaszyfrowany plik cookie w .Net i próbuję odszyfrować jego zawartość w nodejs. Ale nodejs zachowuje rzuca wyjątek "TypeError: DecipherFinal fail"Odszyfruj plik .Net cookie w nodejs
w .NET Używam metody szyfrowania AES z kluczem
932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC.
moim pliku web.config ma następujący wiersz
<machineKey validationKey="A5326FFC9D3B74527AECE124D0B7BE5D85D58AFB12AAB3D76319B27EE57608A5A7BCAB5E34C7F1305ECE5AC78DB1FFEC0A9435C316884AB4C83D2008B533CFD9"
decryptionKey="932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC"
validation="SHA1" decryption="AES" />
I kod, który generuje mój cookie w .NET wygląda następująco:
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));
Kod nodejs który odszyfrowuje plik cookie jest
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;
}
Jestem trochę zagubiony i byłbym wdzięczny wskazówek i pomysłów na temat tego, co może być problemem.
Czy masz zasób, który mówi, jaki rodzaj szyfrowania jest wykonywany w ramach 'FormsAuthentication.Encrypt()'? Microsoft ** ponownie ** nie określa faktycznego wyniku tej metody. –
Mam ostatnio ten sam problem, przeciwko .Net 4.5. Czy ktokolwiek poczynił postępy w odszyfrowywaniu pliku cookie w węźle? – JasonB
@JasonB Odpowiedziałem [bardzo podobne pytanie] (http://stackoverflow.com/q/34882672/5128464) - może być interesujące dla ciebie. – vlp