Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 27517|Atbildi: 1

[Avots] .net/c# CryptoJS aes šifrēts avota kods

[Kopēt saiti]
Publicēts 07.10.2017 17:39:00 | | | |
Nesen es veicu pēcsimulācijas pieteikšanās funkciju, pieteikšanās paroli šifrē CryptoJS aes, un tad es vēlos uzrakstīt atbilstošo algoritmu C#
Ievads AES šifrēšanas algoritmā:

Advanced Encryption Standard (saīsinājums: AES), kas kriptogrāfijā pazīstams arī kā Rijndael šifrēšana, ir bloku šifrēšanas standarts, ko pieņēmusi ASV federālā valdība. Šis standarts tiek izmantots, lai aizstātu oriģinālo DES, un tas ir analizēts un plaši izmantots visā pasaulē. Pēc piecu gadu atlases procesa Nacionālais standartu un tehnoloģiju institūts (NIST) publicēja uzlaboto kriptogrāfisko standartu FIPS PUB 197 2001. gada 26. novembrī un kļuva par derīgu standartu 2002. gada 26. maijā. 2006. gadā uzlabotais šifrēšanas standarts kļuva par vienu no populārākajiem simetriskās atslēgas kriptogrāfijas algoritmiem.

JS algoritms ir šāds:



Es meklēju tiešsaistes AES šifrēšanas vietnes internetā, un rezultāti atšķiras no manas šifrēšanas, šķiet, ka AES ir daudz režīmu, un es esmu redzējis citu cilvēku ievadus no interneta


Sāciet ar vienkārša teksta un atslēgas sagatavošanu:
var plaintText = 'aaaaa Vienkāršs teksts
var keyStr = 'bbbbbbbbbbbbbb'; Parasti atslēga ir virkne  
Saskaņā ar oficiālo tīmekļa vietnes dokumentāciju AES metode atbalsta AES-128, AES-192 un AES-256, un šifrēšanas procesā izmantotā šifrēšanas metode ir atkarīga no ienākošās atslēgas veida, pretējā gadījumā tā tiks šifrēta saskaņā ar AES-256.
CryptoJS atbalsta AES-128, AES-192 un AES-256. Tas izvēlēsies variantu pēc nodotās atslēgas lieluma. Ja izmantojat ieejas frāzi, tā ģenerēs 256 bitu atslēgu.
Tā kā Java tiek dota saskaņā ar 128 bitiem, bet tā kā tā ir virkne, tā ir jāpārvērš uz 128 bitiem priekšgalā.
Sākumā es domāju, ka, izmantojot CryptoJS.enc.Hex.parse, tas pareizi tiks konvertēts uz 128 bitu atslēgu. Bet citādi ...
Pēc daudziem mēģinājumiem jums jāizmanto CryptoJS.enc.Utf8.parse metode, lai pārvērstu atslēgu uz 128 bitu. Nu, tā kā ir teikts, ka tas ir vairāki mēģinājumi, tad iemesls nav zināms, un tas tiks pētīts dziļāk vēlāk.
Pirms virknes tipa atslēgas izmantošanas, pirms to var izmantot, jums ir jāanalizē ar uft8
var atslēga = CryptoJS.enc.Utf8.parse(keyStr);  
Tā kā aizmugurējā sistēma izmanto PKCS5Padding, bet, izmantojot CryptoJS, tika konstatēts, ka vispār nav nobīdes.
Šifrēšana
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {  
    režīms: CryptoJS.mode.ECB,
    polsterējums: CryptoJS.pad.Pkcs7
});
Tā kā CryptoJS ģenerētais šifrētais teksts ir objekts, ja jūs to konvertējat tieši virknē ir Base64 kodēts, atribūts encryptedData.ciphertext tiek konvertēts virknē ir formāts, kas nepieciešams aizmugures sistēmai.
var encryptedBase64Str = encryptedData.toString();
Izeja: 'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY='
console.log(šifrētsBase64Str);
Jums ir jāizlasa ciphertext.toString() uz šifrētiem datiem, lai iegūtu tādu pašu šifrētu tekstu kā Java
var encryptedStr = encryptedData.ciphertext.toString();  
Izeja: '44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06'
console.log(šifrētsStr);  
Tā kā šifrētais šifrētais teksts ir 128 bitu virkne, atšifrēšanas laikā tas ir jāpārvērš Base64 kodētā formātā.
Tad jums jāizmanto metode CryptoJS.enc.Hex.parse, lai to pārvērstu par heksadecimālu, un pēc tam izmantojiet CryptoJS.enc.Base64.stringify, lai to pārvērstu par Base64 kodētu virkni, un pēc tam varat to nodot CryptoJS.AES.decrypt metodei, lai to atšifrētu.
Lai iegūtu virknes tipa šifrēto tekstu, vispirms tas jāparsē ar Hex metodi
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
Šifrēta teksta konvertēšana par Base64 virknēm
To var atšifrēt tikai Base64 tipa virknes šifrēts teksts
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);  
Virkni, kas konvertēta uz Base64 kodējumu, var nodot CryptoJS.AES.decrypt metodē atšifrēšanas operācijai.
Atšifrēšana
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {  
    režīms: CryptoJS.mode.ECB,
    polsterējums: CryptoJS.pad.Pkcs7
});
Pēc CryptoJS atšifrēšanas tas joprojām ir objekts, un, pārvēršot to vienkāršā tekstā, tas ir jāpārvērš par virkni Utf8 formātā.
Pēc atšifrēšanas vienkārša teksta virkne ir jātransponē Utf8 veidā
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  
console.log(decryptedStr); "aaaa




Šeit ir AES .NET/C# ieviešanas avota kods:







Iepriekšējo:[12306] Atvainojiet, jo jūs pārāk bieži apkalpojat pasažieri, lūdzu, mēģiniet vēlreiz rīt
Nākamo:C# īsteno procesu atmiņas kartēšanas failu koplietošanas atmiņu
Publicēts 29.05.2018 00:27:20 |
Skatiet lielā puiša uzlaboto pirmkodu
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com