Cómo descifrar la contraseña de JavaScript CryptoJS.AES.encrypt (contraseña, frase de contraseña) en Python
Tengo una contraseña que está encriptada de JavaScript a través de
var password = 'sample'
var passphrase ='sample_passphrase'
CryptoJS.AES.encrypt(password, passphrase)
Luego intenté descifrar la contraseña que viene de JavaScript en 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)
Revisé JS desde la consola del navegador, muestra IV enCryptoJS.AES.encrypt(password, passphrase)
es un objeto con algunos atributos (comosigBytes:16, words: [-44073646, -1300128421, 1939444916, 881316061]
) Parece generado al azar.
Desde una página web, me dice que JS tiene dos formas de cifrar la contraseña (Link de referencia ):
a.crypto.createCipher(algorithm, password)
si.crypto.createCipheriv(algorithm, key, iv)
Lo que vi en JavaScript debería ser la opción a. Sin embargo, solo la opción b es equivalente a AES.new () en python.
Las preguntas son:
¿Cómo puedo restaurar esta contraseña en Python sin cambiar el código JavaScript?
Si necesito IV en Python, ¿cómo puedo obtenerlo de la contraseña que se usa en JavaScript?