¡Esto es un rompecabezas para mí y estoy realmente molesto porque no puedo resolverlo! Entonces, si alguien tiene algo de tiempo libre, quisiera aquí algunas sugerencias sobre cómo resolverlo.¿Es esta cadena Base64? ¿Cómo puedo saber cuál es la codificación utilizada?
Uso un software que almacena la contraseña en una base de datos de Oracle. El campo de contraseña es de tipo Varchar2 (100 char). Me parece que el software codifica las contraseñas y almacena la cadena codificada en la base de datos.
Mi contraseña es '1234' y la cadena codificada es 'cRDtpNCeBiql5KOQsKVyrA0sAiA ='. Todas las contraseñas en la base de datos tienen 28 caracteres de largo.
El rompecabezas que me he asignado a mí mismo es encontrar la codificación y/o encriptación de la cadena. Mi primer cheque estaba en Base64
Así que aquí es mi primera prueba en Python (libre):
>>> import base64
>>> encoded = 'cRDtpNCeBiql5KOQsKVyrA0sAiA='
>>> decoded = base64.b64decode(encoded)
>>> decoded
'q\x10\xed\xa4\xd0\x9e\x06*\xa5\xe4\xa3\x90\xb0\xa5r\xac\r,\x02 '
>>> print decoded
qíᄂО*ᆬ䣐ᄚᆬrᆲ
,
Aquí es mi segunda prueba:
>>> myString = '1234'
>>> encoded = base64.b64encode(myString)
>>> encoded
'MTIzNA=='
>>> decoded = base64.b64decode('MTIzNA==')
>>> decoded
'1234'
lo tanto, mi La primera idea es que esto no está codificado en Base64. Después de consultar Wikipedia (https://en.wikipedia.org/wiki/Base64), parece que las cadenas codificadas en Base64 no son de tamaño fijo. Mi segundo pensamiento es que la cadena fue encriptada y luego codificada en Base64 y es por eso que obtengo la cadena decodificada de aspecto extraño.
¿Alguna idea?
podría ser la codificación base64 de un hash sha1 como 'len (base64.b16encode (base64.b64decode ('cRDtpNCeBiql5KOQsKVyrA0sAiA =')))' is '40'? –
Me pregunto qué difícil sería descifrar (vale, no es realmente descifrar) el SHA1 hash en la contraseña ya que conozco todas las restricciones (longitud mínima, longitud máxima, alfa, mayúsculas, números, caracteres especiales, etc.) ... ¡Tal vez debería hacer otra pregunta! :) –
Dan No entiendo por qué usas b16encode, ¿puedes explicarlo? –