Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 27517|Antwort: 1

[Quelle] .net/c# CryptoJS aes verschlüsselter Quellcode

[Link kopieren]
Veröffentlicht am 07.10.2017 17:39:00 | | | |
Kürzlich habe ich eine Login-Funktion nach der Simulation durchgeführt, das Login-Passwort wird von CryptoJS aes verschlüsselt, und dann möchte ich den entsprechenden Algorithmus in C# schreiben.
Einführung in den AES-Verschlüsselungsalgorithmus:

Der Advanced Encryption Standard (Abkürzung: AES), auch bekannt als Rijndael-Verschlüsselung in der Kryptographie, ist ein von der US-Bundesregierung eingeführter Blockverschlüsselungsstandard. Dieser Standard wird verwendet, um das ursprüngliche DES zu ersetzen, und wurde weltweit analysiert und weit verbreitet eingesetzt. Nach einem fünfjährigen Auswahlverfahren wurde der Advanced Cryptographic Standard am 26. November 2001 vom National Institute of Standards and Technology (NIST) in FIPS PUB 197 veröffentlicht und wurde am 26. Mai 2002 gültig. Im Jahr 2006 wurde der Advanced Encryption Standard zu einem der beliebtesten Algorithmen für symmetrische Schlüsselkryptographie.

Der js-Algorithmus ist wie folgt:



Ich habe online nach AES-Verschlüsselungswebsites im Internet gesucht, und die Ergebnisse unterscheiden sich von meiner eigenen Verschlüsselung, AES scheint viele Modi zu haben, und ich habe die Einführungen anderer Leute aus dem Internet gesehen


Beginnen Sie damit, einen Klartext und einen Schlüssel vorzubereiten:
var plaintText = 'aaaaaaa'; Klartext
var keyStr = 'bbbbbbbbbbbbbbbb'; Im Allgemeinen ist die Tonart eine Saite  
Laut der offiziellen Website-Dokumentation unterstützt die AES-Methode AES-128, AES-192 und AES-256, und die im Verschlüsselungsprozess verwendete Verschlüsselungsmethode hängt vom Typ des eingehenden Schlüssels ab, andernfalls wird er gemäß AES-256 verschlüsselt.
CryptoJS unterstützt AES-128, AES-192 und AES-256. Es wählt die Variante anhand der Größe des Schlüssels, den du durchgibst. Wenn du eine Passphrase verwendest, erzeugt sie einen 256-Bit-Schlüssel.
Da Java nach 128 Bit angegeben ist, aber da es ein String ist, muss es im Frontend in 128 Bit konvertiert werden.
Zuerst dachte ich, dass die Verwendung von CryptoJS.enc.Hex.parse es korrekt in einen 128-Bit-Schlüssel umwandeln würde. Aber ansonsten...
Nach vielen Versuchen müssen Sie die Methode CryptoJS.enc.Utf8.parse verwenden, um den Schlüssel auf 128-Bit umzuwandeln. Da gesagt wird, es handele sich um mehrere Versuche, ist der Grund nicht bekannt, und es wird später genauer untersucht.
Bevor du den Schlüssel des Stringtyps benutzt, musst du mit uft8 parsen, bevor du ihn verwenden kannst
var key = CryptoJS.enc.Utf8.parse(keyStr);  
Da das Backend PKCS5Padding verwendet, stellte sich bei der Verwendung von CryptoJS jedoch heraus, dass es überhaupt keinen Offset gab.
Verschlüsselung
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {  
    Modus: CryptoJS.mode.ECB,
    Padding: CryptoJS.pad.Pkcs7
});
Da der von CryptoJS generierte Ciphertext ein Objekt ist, wenn man ihn direkt in eine Zeichenfolge umwandelt, die von Base64 codiert ist, wird das Attribut auf encryptedData.Ciphertext in eine Zeichenkette umgewandelt, ist das vom Backend geforderte Format.
var encryptedBase64Str = encryptedData.toString();
Ausgabe: 'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY='
console.log(verschlüsseltBase64Str);
Man muss ciphertext.toString() auf encryptedData lesen, um denselben Chiffretext wie Java zu erhalten
var encryptedStr = encryptedData.ciphertext.toString();  
Ausgabe: '44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06'
console.log(verschlüsselteStr);  
Da der verschlüsselte Chiffretext ein 128-Bit-String ist, muss er beim Entschlüsseln in das Base64-kodierte Format umgewandelt werden.
Dann musst du die Methode CryptoJS.enc.Hex.parse verwenden, um es in hexadezimal umzuwandeln, und dann CryptoJS.enc.Base64.stringify verwenden, um es in einen Base64-codierten String umzuwandeln, und dann kannst du es an die Methode CryptoJS.AES.decrypt weiterleiten, um es zu entschlüsseln.
Um den Chiffretext des Zeichenkettentyps zu erhalten, muss man ihn zuerst mit der Hex-Methode parsen.
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);
Konvertiere Chiffretext in Base64-Zeichenketten
Nur Base64-Typ-String-Ciphertext kann ihn entschlüsseln
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);  
Die in Base64-Codierung konvertierte Zeichenkette kann für die Entschlüsselungsoperation in die Methode CryptoJS.AES.decrypt eingegeben werden.
Entschlüsselung
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {  
    Modus: CryptoJS.mode.ECB,
    Padding: CryptoJS.pad.Pkcs7
});
Nach der Entschlüsselung von CryptoJS ist es immer noch ein Objekt, und die Umwandlung in Klartext muss in eine Zeichenkette im Utf8-Format umgewandelt werden.
Nach der Entschlüsselung muss die Klartext-Zeichenkette wie bei Utf8 transponiert werden
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);  
console.log(entschlüsseltStr); 'aaaaa'




Hier ist der Quellcode für die .NET/C#-Implementierung von AES:







Vorhergehend:[12306] Entschuldigung, weil Sie den Passagier zu oft bedienen, bitte versuchen Sie es morgen nochmal
Nächster:C# implementiert Prozessspeicher-Mapping Dateifreigabespeicher
Veröffentlicht am 29.05.2018 00:27:20 |
Beziehen Sie sich auf den fortgeschrittenen Quellcode des großen Herstellers
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com