Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 27517|Svare: 1

[Kilde] .net/c# CryptoJS aes kryptert kildekode

[Kopier lenke]
Publisert på 07.10.2017 17:39:00 | | | |
Nylig gjorde jeg en innloggingsfunksjon etter simuleringen, innloggingspassordet er kryptert av CryptoJS aes, og så vil jeg skrive den tilsvarende algoritmen i C#
Introduksjon til AES-krypteringsalgoritmen:

Advanced Encryption Standard (forkortelse: AES), også kjent som Rijndael-kryptering i kryptografi, er en blokkkrypteringsstandard vedtatt av den amerikanske føderale regjeringen. Denne standarden brukes til å erstatte den opprinnelige DES-en og har blitt analysert og mye brukt over hele verden. Etter en femårig utvelgelsesprosess ble Advanced Cryptographic Standard publisert av National Institute of Standards and Technology (NIST) i FIPS PUB 197 den 26. november 2001, og ble en gyldig standard den 26. mai 2002. I 2006 ble Advanced Encryption Standard en av de mest populære algoritmene for symmetrisk nøkkelkryptografi.

Js-algoritmen er som følger:



Jeg søkte etter nettbaserte AES-krypteringsnettsteder på Internett, og resultatene er forskjellige fra min egen kryptering, AES ser ut til å ha mange moduser, og jeg har sett andres introduksjoner fra Internett


Start med å forberede en klartekst og nøkkel:
var plaintText = 'aaaaaa'; Klartekst
var keyStr = 'bbbbbbbbbbbbbbbb'; Vanligvis er nøkkelen en streng  
Ifølge dokumentasjonen på den offisielle nettsiden støtter AES-metoden AES-128, AES-192 og AES-256, og krypteringsmetoden som brukes i krypteringsprosessen avhenger av typen innkommende nøkkel, ellers vil den bli kryptert i henhold til AES-256.
CryptoJS støtter AES-128, AES-192 og AES-256. Den velger varianten ut fra størrelsen på nøkkelen du passerer inn. Hvis du bruker en passfrase, vil den generere en 256-bits nøkkel.
Siden Java gis i henhold til 128bit, men siden det er en streng, må det konverteres til 128bit på frontend.
Først trodde jeg at bruk av CryptoJS.enc.Hex.parse ville konvertere den korrekt til en 128-bits nøkkel. Men ellers...
Etter mange forsøk må du bruke metoden CryptoJS.enc.Utf8.parse for å konvertere nøkkelen til 128-bits. Vel, siden det sies at det er flere forsøk, er årsaken ikke kjent, og det vil bli studert nærmere senere.
Før du bruker nøkkelen til strengtypen, må du parse med uft8 før du kan bruke den
var key = CryptoJS.enc.Utf8.parse(keyStr);  
Siden backend bruker PKCS5Padding, men ved bruk av CryptoJS, ble det funnet at det ikke var noen offset i det hele tatt.
Kryptering
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {  
    modus: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});
Siden chifferteksten generert av CryptoJS er et objekt, hvis du konverterer den direkte til en streng som er en Base64-kodet, er attributtet på encryptedData. Chiffertekst konverteres til en streng er formatet som kreves av backend.
var encryptedBase64Str = encryptedData.toString();
Output: 'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY='
console.log(kryptertBase64Str);
Du må lese ciphertext.toString() på encryptedData for å få samme chiffertekst som Java
var encryptedStr = encryptedData.ciphertext.toString();  
Utdata: '44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06'
console.log(kryptertStr);  
Siden den krypterte chifferteksten er en 128-bits streng, må den konverteres til Base64-kodet format ved dekryptering.
Deretter må du bruke metoden CryptoJS.enc.Hex.parse for å konvertere det til heksadesimal, og deretter bruke CryptoJS.enc.Base64.stringify for å konvertere det til en Base64-kodet streng, og så kan du sende det til CryptoJS.AES.decrypt-metoden for å dekryptere det.
For å få chifferteksten til strengtypen må du først parse den med Hex-metoden
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
Konverter chiffertekst til Base64-strenger
Kun Base64-type strengchiffertekst kan dekryptere det
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);  
Strengen konvertert til Base64-koding kan sendes inn i CryptoJS.AES.decrypt-metoden for dekrypteringsoperasjon.
Dekryptering
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {  
    modus: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});
Etter CryptoJS-dekryptering er det fortsatt et objekt, og å gjøre det om til klartekst må konverteres til en streng i Utf8-format.
Etter dekryptering må klartekststrengen transponeres på samme måte som Utf8
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  
console.log(dekryptertStr); 'Aaaaaaa'




Her er kildekoden for .NET/C#-implementasjonen av AES:







Foregående:[12306] Beklager, fordi du opererer passasjeren for ofte, vennligst prøv igjen i morgen
Neste:C# implementerer prosessminnekartlegging fildelingsminne
Publisert på 29.05.2018 00:27:20 |
Se den avanserte kildekoden til den store aktøren
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com