我有一个将密码存储在 ms sql 数据库中的应用程序,我希望复制用于生成这些密码的算法。
我不得不承认我对下一步应该尝试的东西有点迷茫。
Str in => Output
0 = 0x81
00 = 0x81 0x95
000 = 0x81 0x95 0x83
001 = 0x81 0x95 0x82
002 = 0x81 0x95 0x81
100 = 0x80 0x95 0x83
900 = 0x88 0x95 0x83
ddddddddd = 0x55 0x41 0x57 0x5E 0x4E 0x48 0x4F 0x57 0x40
dddddddddd = 0x55 0x41 0x57 0x5E 0x4E 0x48 0x4F 0x57 0x40 0x42
输出中找到的字符 => 从 0x21 到 0x9A
我尝试了 xor 但没有得到任何产生结果的东西。我认为每个角色都必须以某种方式依赖于前一个角色,但我找不到将它们联系在一起的任何东西。
在尝试解决这个问题时,是否有我应该检查的过程或顺序?任何人都可以给我一个提示或推动正确的方向来解决它。任何帮助将不胜感激。
编辑测试你的想法 SeanA 似乎被证明是准确的......
dddddddddd = 0x55 0x41 0x57 0x5E 0x4E 0x48 0x4F 0x57 0x40 0x42
ddddd0dddd = 0x55 0x41 0x57 0x5E 0x4E 0x9C 0x4F 0x57 0x40 0x42
dd0ddddddd = 0x55 0x41 0x83 0x5E 0x4E 0x48 0x4F 0x57 0x40 0x42
1234567890123456... 0x80 0x97 0x80 0x8E 0x9F 0x9A 0x9C 0x8B 0x9D 0x96 0x9A 0x98....
确实,每个字符都有一个值,具体取决于它在字符串中的位置。密码的大小没有限制。当更多的时间占主导地位时,我将显着增加样本量,是否有任何特定值我应该测试以增加找到关系的机会?
编辑 2
我已经按照建议完成了一个表格 (xls),您可以从 http://www.filedropper.com/result_1下载 这以小数形式显示输入和输出之间的差异图表。显示为十六进制的输入和差值之间存在很强的模式。每个字符位置都有非常一致的模式,沿着图表(该位置的每个字符)。此外,每个位置的可能范围在每组 16 个值中是一致的,这些值与输入值上最高有效位的变化一致显示为十六进制。
然而,我从表中发现我可以用与算法相同的结果对密码进行编码,所以我们的理论似乎成立。
我非常想继续调查并找到算法本身,并且非常感谢任何帮助我找到正确方向的指针。