2

我正在对我负责理解的系统进行逆向工程。系统使用令牌和半随机 [1] 时间戳(作为盐)和未知的散列函数来生成用于身份验证的随机密钥。

它生成的字符串长度为 64 个字符,并且似乎有一种散列模式。例如(基于不相关长度的虚构输入和输出,因为这个问题是理论):

salt: 135407067754316
token: aaaa.bbbb.cccc.dddd

这将产生:

hash: d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

然后换盐:

salt: 13540707209819
token: aaaa.bbbb.cccc.dddd

产生:

hash: d41d9g838fddb275e9800123ecf8427ed41d9g838fddb275e9800123ecf8427e

类似于第一个哈希(前 3 个字符始终匹配),其中生成的唯一区别是密钥(半随机时间戳),这使我得出结论,他们正在使用一些基本的哈希,它使用随机时间戳作为盐。

问题我将如何缩小他们的加密方式或他们正在使用的功能?我可以生成我需要的任意数量的哈希(使用我可用的密钥和令牌)但是我不能使用我选择的令牌和密钥生成哈希。结果是 64 个字符的长度。

如果我有 100、200、500、1000、10000、100000 个盐、令牌和结果的示例,是否存在允许我暴力破解生成方法的技术?

[1] 半随机意味着他们采用当前时间戳(例如:1354068826)并在末尾添加一个随机的 5 长度数字,以创建类似 135406882613951 的内容)

最后一点,除了基本概念(输入值和盐,获取哈希)之外,我对加密、散列或安全一无所知。

4

0 回答 0