【发布时间】:2010-11-30 10:08:56
【问题描述】:
这对我来说是一个难题,我真的很生气,我无法解决它!所以,如果有人有空闲时间,我想在这里提供一些关于如何解决它的建议!
我使用的软件将密码存储在 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 哈希的 base64 编码,因为
len(base64.b16encode(base64.b64decode('cRDtpNCeBiql5KOQsKVyrA0sAiA=')))是40? -
我想知道将 SHA1 哈希解密到密码中会有多困难(好吧,这并不是真正解密),因为我知道所有约束(最小长度、最大长度、alpha、大写、数字、特殊字符等)...也许我应该问另一个问题! :)
-
我不明白你为什么使用b16encode,你能解释一下吗?
-
查看我关于“解密”的最新编辑。
标签: python oracle encryption encoding base64