|
|
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ītNākamo:C# īsteno procesu atmiņas kartēšanas failu koplietošanas atmiņu
|