Ich habe den folgende Python-Skript für die Entschlüsselung:AES-Verschlüsselung in Node.js erwartete Entschlüsselung in Python entsprechen
from Crypto.Cipher import AES
shared_secret = raw_input('Enter crypted_shared_secret: ').strip()
cipher = AES.new(shared_secret.decode('base64'), AES.MODE_ECB)
blob = raw_input('Enter crypted_blob: ').strip()
plain = cipher.decrypt(blob.decode('base64'))
print(plain)
Ich versuche, um die Werte zu erzeugen, die die ursprünglichen blob
unter Verwendung dieses Skript erzeugen würden, unter Verwendung von Knoten. Hier ist mein Versuch:
const Crypto = require('crypto');
var shared_secret = Crypto.randomBytes(32);
var cipher = Crypto.createCipher('aes-256-ecb', shared_secret);
crypted_blob = cipher.update(blob, 'utf8', 'base64') + cipher.final('base64');
ich nur das Node.js Skript ändern kann, aber ich bin mir nicht sicher, wo es schief geht.
Ich kann immer noch nicht funktionieren. Ich habe den RSA-Code geschnitten, der funktionierte, der AES ist der Teil, der nicht zu funktionieren scheint. Wenn ich Knoten öffnen und mit 'blob = 'Hallo Welt' anfangen und dann die 4 Zeilen Code ausführen, bekomme ich z. 'FH1hDHh49uGiWZhNCtg5Dw ==' als 'crypted_blob'. Dann kann ich 'shared_secret.toString ('base64')' ausführen und z. 'bUQXpYLhZnR + 9vKTU8txkRo7O6j7nrks1MJnxI/YIGo ='. Dann öffne ich Python, geben Sie die letztere als 'shared_secret' und die ehemalige als' Blob', aber ich bekomme immer noch eine verschlüsselte Zeichenfolge (falsche Entschlüsselung). – wizplum
Ja, ich habe verpasst, dass Sie die falsche Methode in node.js verwendet haben. Siehe meine Bearbeitung. –
Das hat funktioniert! Ich werde versuchen, die EZB durch CBC zu ersetzen, danke für den Tipp! – wizplum