Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 27517|Odgovoriti: 1

[Vir] .net/c# šifrirana izvorna koda CryptoJS aes

[Kopiraj povezavo]
Objavljeno na 7. 10. 2017 17:39:00 | | | |
Nedavno sem uporabil funkcijo prijave po simulaciji, geslo za prijavo je šifrirano s CryptoJS aes, nato pa želim napisati ustrezni algoritem v C#
Uvod v AES šifrirni algoritem:

Napredni standard šifriranja (okrajšava: AES), znan tudi kot Rijndael šifriranje v kriptografiji, je standard blokovnega šifriranja, ki ga je sprejela zvezna vlada ZDA. Ta standard se uporablja kot nadomestilo za izvirni DES in je bil analiziran ter široko uporabljen po vsem svetu. Po petletnem izbirnem postopku je Napredni kriptografski standard objavil Nacionalni inštitut za standarde in tehnologijo (NIST) v FIPS PUB 197 dne 26. novembra 2001 in je postal veljaven standard 26. maja 2002. Leta 2006 je napredni standard šifriranja postal eden najbolj priljubljenih algoritmov za kriptografijo s simetričnim ključem.

algoritem js je naslednji:



Iskal sem spletne strani za AES šifriranje na internetu in rezultati se razlikujejo od mojega šifriranja, AES ima veliko načinov, videl pa sem tudi uvode drugih ljudi z interneta


Začnite s pripravo izvirnega besedila in ključa:
var plaintText = 'aaaaa'; Navadno besedilo
var keyStr = 'bbbbbbbbbbbbbbbb'; Na splošno je ključ struna  
Po uradni spletni dokumentaciji metoda AES podpira AES-128, AES-192 in AES-256, metoda šifriranja, uporabljena v procesu šifriranja, pa je odvisna od vrste vhodnega ključa, sicer bo šifrirana po AES-256.
CryptoJS podpira AES-128, AES-192 in AES-256. Izbere različico glede na velikost ključa, ki ga vnesete. Če uporabite geslo, bo to generiralo 256-bitni ključ.
Ker je Java dana glede na 128bit, a ker gre za niz, ga je treba na frontendu pretvoriti v 128bit.
Sprva sem mislil, da bo uporaba CryptoJS.enc.Hex.parse pravilno pretvorila v 128-bitni ključ. Ampak drugače...
Po več poskusih morate uporabiti metodo CryptoJS.enc.Utf8.parse, da pretvorite ključ v 128-bitno. Ker se pravi, da gre za več poskusov, potem razlog ni znan in bo kasneje podrobneje razučen.
Preden uporabiš tonaliteto vrste strune, moraš najprej razčleniti z uft8, preden jo lahko uporabiš
var key = CryptoJS.enc.Utf8.parse(keyStr);  
Ker backend uporablja PKCS5Padding, je bilo ugotovljeno, da pri uporabi CryptoJS ni bilo nobenega offseta.
Šifriranje
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {  
    način: CryptoJS.mode.ECB,
    polnilo: CryptoJS.pad.Pkcs7
});
Ker je šifrirano besedilo, ki ga generira CryptoJS, objekt, če ga neposredno pretvorite v niz z Base64 kodiranjem, je atribut na encryptedData.ciphertext pretvorjen v niz format, ki ga zahteva backend.
var encryptedBase64Str = encryptedData.toString();
Izhod: 'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY='
console.log(encryptedBase64Str);
Za enako šifrirano besedilo kot Java morate prebrati ciphertext.toString() na encryptedData
var encryptedStr = encryptedData.ciphertext.toString();  
Izhod: '44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06'
console.log(encryptedStr);  
Ker je šifrirano šifrirano besedilo 128-bitni niz, ga je treba pri dešifriranju pretvoriti v Base64 kodiran format.
Nato morate uporabiti metodo CryptoJS.enc.Hex.parse za pretvorbo v šestnajstiško obliko, nato uporabiti CryptoJS.enc.Base64.stringify za pretvorbo v Base64 kodiran niz, nato pa ga lahko posredujete metodi CryptoJS.AES.decrypt za dešifriranje.
Za pridobitev šifriranega besedila tipa niza ga morate najprej razčleniti s heksadecimalno metodo
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
Pretvorba šifriranega besedila v Base64 nize
Le šifrirano besedilo tipa Base64 lahko dešifrira
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);  
Niz, pretvorjen v Base64 kodiranje, se lahko posreduje metodi CryptoJS.AES.decrypt za operacijo dešifriranja.
Dešifriranje
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {  
    način: CryptoJS.mode.ECB,
    polnilo: CryptoJS.pad.Pkcs7
});
Po dešifriranju s CryptoJS je še vedno objekt, za njegovo pretvorbo v čisto besedilo pa je treba pretvoriti v niz v formatu Utf8.
Po dešifriranju je treba niz odprtega besedila zamenjati na način Utf8
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  
console.log(decryptedStr); 'aaaaa'




Tukaj je izvorna koda za implementacijo AES v .NET/C#:







Prejšnji:[12306] Oprostite, ker prepogosto upravljate potnika, poskusite znova jutri
Naslednji:C# izvaja preslikavo procesnega pomnilnika za deljenje datotečnega pomnilnika
Objavljeno na 29. 05. 2018 00:27:20 |
Poglejte napredno izvorno kodo velikega igralca
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com