这是一个难题,我真的很烦,我无法解决它!所以,如果有人有空闲时间,我想在这里提出一些关于如何解决它的建议!这是字符串Base64吗?我怎么知道什么是使用的编码?
我使用的软件将密码存储在oracle数据库中。密码字段的类型是Varchar2(100个字符)。在我看来,软件编码密码并将编码的字符串存储在数据库中。
我的密码是'1234',编码的字符串是'cRDtpNCeBiql5KOQsKVyrA0sAiA ='。数据库中的所有密码长度为28个字符。
我已经分配给自己的难题是找到字符串的编码和/或加密。我第一次检查是在Base64编码
所以这是我在Python第一次测试(空闲):
>>> 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ᆲ
,
这里是我的第二个测试:
>>> myString = '1234'
>>> encoded = base64.b64encode(myString)
>>> encoded
'MTIzNA=='
>>> decoded = base64.b64decode('MTIzNA==')
>>> decoded
'1234'
所以,我的首先想到的是,这不是Base64编码的。在查看维基百科(https://en.wikipedia.org/wiki/Base64)后,似乎Base64编码的字符串不是固定的大小。我的第二个想法是,字符串被加密,然后编码到Base64,这就是为什么我得到奇怪的解码字符串。
任何想法?
可能是sha1 hash的base64编码为len(base64.b16encode(base64.b64decode('cRDtpNCeBiql5KOQsKVyrA0sAiA =')))```40`? – 2010-11-30 10:14:32
我想知道将SHA1哈希解密为密码是多么困难(因为我知道所有约束条件(最小长度,最大长度,阿尔法,首都,数字,特殊字符等)......)也许我应该问另一个问题! :) – 2010-11-30 11:22:15
丹我不明白你为什么使用b16encode,你能解释一下吗? – 2010-11-30 11:23:24