Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 27517|Válasz: 1

[Forrás] .net/c# CryptoJS aes titkosított forráskód

[Linket másol]
Közzétéve 2017. 10. 07. 17:39:00 | | | |
Nemrég csináltam egy szimuláció utáni bejelentkezési függvényt, a bejelentkezési jelszót a CryptoJS aes titkosítja, majd szeretném megírni a megfelelő algoritmust C#-ban
Bevezetés az AES titkosítási algoritmusba:

Az Advanced Encryption Standard (rövidítve: AES), más néven Rijndael titkosítás a kriptográfiában, egy blokk titkosítási szabvány, amelyet az Egyesült Államok szövetségi kormánya fogadott el. Ezt a szabványt az eredeti DES helyettesítésére használják, és világszerte elemezték, széles körben alkalmazták. Öt évig tartó kiválasztási folyamat után az Advanced Cryptographic Standard a National Institute of Standards and Technology (NIST) által 2001. november 26-án megjelent FIPS PUB 197-ben, és 2002. május 26-án érvényessé vált. 2006-ban az Advanced Encryption Standard lett az egyik legnépszerűbb algoritmus a szimmetrikus kulcsos kriptográfiához.

A js algoritmus a következő:



Kerestem online AES titkosító weboldalakat az interneten, és az eredmények eltérnek az én titkosításomtól, az AES-nek sok módja van, és láttam mások bemutatkozásait az interneten


Kezdjük azzal, hogy elkészít egy tiszta szöveget és kulcsot:
var plaintText = 'aaaaaaaa'; Egyszerű szöveg
var keyStr = 'bbbbbbbbbb'; Általában a kulcs egy húr  
A hivatalos weboldal dokumentációja szerint az AES módszer támogatja az AES-128, AES-192 és AES-256 rendszereket, és a titkosítási módszer a bejövő kulcs típusától függ, különben az AES-256 szerint titkosítva lesz.
A CryptoJS támogatja az AES-128, AES-192 és AES-256 rendszereket. A változatot a kulcs mérete alapján választja ki, amit beadsz. Ha jelszót használsz, akkor egy 256 bites kulcsot generál.
Mivel a Java 128 bites szerint van megadva, de mivel egy string, a frontendben 128 bitre kell konvertálni.
Eleinte azt hittem, hogy a CryptoJS.enc.Hex.parse segítségével helyesen átalakítja egy 128 bites kulcsra. De egyébként...
Sok próbálkozás után a CryptoJS.enc.Utf8.parse módszerrel kell átalakítani a kulcsot 128 bitessé. Nos, mivel azt mondják, hogy többszörös próbálkozásról van szó, akkor az ok nem ismert, és később mélyebben fogjuk vizsgálni.
Mielőtt használnád a húrtípus kulcsát, először uft8-cal kell parsedoznod, mielőtt használhatnád
var key = CryptoJS.enc.Utf8.parse(keyStr);  
Mivel a háttérrendszer PKCS5Paddinget használ, de CryptoJS használatában kiderült, hogy egyáltalán nincs eltolás.
Titkosítás
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {  
    mód: CryptoJS.mode.ECB,
    tömnázás: CryptoJS.pad.Pkcs7
});
Mivel a CryptoJS által generált titkosított szöveg objektum, ha közvetlenül egy Base64 kódolt stringjűre konvertáljuk, az encryptedData.ciphertext attribútuma egy stringgé konvertálódik, ami a háttérrendszer által igényelt formátum.
var encryptedBase64Str = encryptedData.toString();
Output: 'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY='
console.log(titkosítottBase64Str);
A ciphertext.toString() kódot kell olvasnod az encryptedData-n, hogy ugyanazt a titkosított szöveget kapd, mint a Java-ban
var encryptedStr = encryptedData.ciphertext.toString();  
Kimenet: '44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06'
console.log(titkosítottStr);  
Mivel a titkosított titkosított szöveg 128 bites string, a dekódoláskor Base64 kódolt formátumra kell konvertálni.
Ezután a CryptoJS.enc.Hex.parse módszerrel át kell alakítani hexadecimalá, majd a CryptoJS.enc.Base64.stringify segítségével Base64 kódolt stringjűre konvertálhatod, majd átadhatod a CryptoJS.AES.decrypt metódusnak a dekódoláshoz.
Ahhoz, hogy megkapjuk a string típus titkosított szövegét, először Hex módszerrel kell parzálni.
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
Titkosított szöveg átalakítása Base64 stringekre
Csak a Base64 típusú titkosított szöveg tudja ezt megfejteni
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);  
A Base64 kódolóra konvertált string átvihető a CryptoJS.AES.decrypt módszerbe a dekódolási műveletekhez.
Fejtés
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {  
    mód: CryptoJS.mode.ECB,
    tömnázás: CryptoJS.pad.Pkcs7
});
A CryptoJS dekódolás után még mindig objektum, és a tiszta szöveggé alakításához Utf8 formátumú stringre kell konvertálni.
A titkosítás után a tiszta szöveg láncsorát az Utf8 módján kell áthelyezni
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  
console.log(dekódoltStr); 'aaaaaaaa'




Íme az AES .NET/C# implementációjának forráskódja:







Előző:[12306] Bocsánat, mert túl gyakran vezeti az utast, kérem, próbálja meg újra holnap
Következő:C# megvalósítja a folyamatmemória leképező fájlmegosztási memóriát
Közzétéve 2018. 05. 29. 0:27:20 |
Nézd meg a nagy fiúk fejlett forráskódját
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com