ich ein Passwort haben, das Verschlüsseln von JavaScript ist überWie das Passwort von JavaScript CryptoJS.AES.encrypt (Passwort, Passwort) in Python zu entschlüsseln
var password = 'sample'
var passphrase ='sample_passphrase'
CryptoJS.AES.encrypt(password, passphrase)
Dann habe ich versucht, kommt das Passwort zu entschlüsseln, die von JavaScript in Python :
from Crypto.Cipher import AES
import base64
PADDING = '\0'
pad_it = lambda s: s+(16 - len(s)%16)*PADDING
key = 'sample_passphrase'
iv='11.0.0.101' #------> here is my question, how can I get this iv to restore password, what should I put here?
key=pad_it(key) #------> should I add padding to keys and iv?
iv=pad_it(iv) ##
source = 'sample'
generator = AES.new(key, AES.MODE_CFB,iv)
crypt = generator.encrypt(pad_it(source))
cryptedStr = base64.b64encode(crypt)
print cryptedStr
generator = AES.new(key, AES.MODE_CBC,iv)
recovery = generator.decrypt(crypt)
print recovery.rstrip(PADDING)
I von Browser-Konsole JS überprüft, zeigt es, in CryptoJS.AES.encrypt(password, passphrase)
IV mit einigen Attributen ein Objekt (wie sigBytes:16, words: [-44073646, -1300128421, 1939444916, 881316061]
). Es scheint zufällig erzeugt zu werden.
Von einer Seite, es sagt mir, dass JS Zweiweg Passwort zu verschlüsseln hat (reference link):
- ein.
crypto.createCipher(algorithm, password)
- b.
crypto.createCipheriv(algorithm, key, iv)
Was ich in JavaScript gesehen sollte eine Option sein. Allerdings entspricht nur Option b AES.new() in Python.
Die Fragen sind:
Wie kann ich das Passwort in Python wiederherstellen, ohne JavaScript-Code zu ändern?
Wenn ich IV in Python brauche, wie bekomme ich es aus dem Passwort, das in JavaScript verwendet wird?
CryptoJS AES verwendet standardmäßig den CBC-Modus, so dass kein CBF-Modus in Python benötigt wird. AES.encrypt gibt auch ein Objekt zurück. Mit toString() erhalten Sie einen base64-kodierten Blob, der salt, iv und message enthält. Alle von ihnen müssen Sie Ende-Feed in Python trennen. Beachten Sie auch, dass Passwort und Schlüssel zwei verschiedene Dinge sind. – SKR
Danke, ändern Sie einfach Schlüssel zu sample_passphrase, damit es klarer wird. aber was ist, wenn ich nicht zur String() Ausgabe komme? Ist das ein unmöglicher Job? @SKR – Bing
Also meinst du, du hast überhaupt keine Kontrolle über die js? Wie geht der JS-Code weiter? Was passiert mit dem Objekt, das von encrypt zurückgegeben wird? Sie müssen das Salz und iv aus dem js irgendwie bekommen. Oder willst du nur das Verhalten der js "verspotten" und eine ähnliche verschlüsselte Nachricht für eine externe API oder etwas generieren? – SKR