So entschlüsseln Sie ein Passwort aus JavaScript CryptoJS.AES.encrypt (Passwort, Passphrase) in Python

Ich habe ein Passwort, das von JavaScript über @ verschlüsselt wi

  var password = 'sample'
  var passphrase ='sample_passphrase'
  CryptoJS.AES.encrypt(password, passphrase)

Dann habe ich versucht, das Passwort zu entschlüsseln. Es stammt aus 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)

Ich habe JS von der Browserkonsole aus überprüft. In @ wird IV angezeigCryptoJS.AES.encrypt(password, passphrase) ist ein Objekt mit einigen Attributen (wiesigBytes:16, words: [-44073646, -1300128421, 1939444916, 881316061]). Es scheint zufällig generiert.

Von einer Webseite erfahre ich, dass JS zwei Möglichkeiten zum Verschlüsseln von Passwörtern bietet reference link):

ein.crypto.createCipher(algorithm, password)b.crypto.createCipheriv(algorithm, key, iv)

Was ich in JavaScript gesehen habe, sollte Option a sein. In Python entspricht jedoch nur Option b AES.new ().

Die Fragen sind:

Wie kann ich dieses Passwort in Python wiederherstellen, ohne den JavaScript-Code zu ändern?

Wenn ich IV in Python benötige, wie kann ich es aus dem in JavaScript verwendeten Kennwort abrufen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage