![]() |
1
2
一个10字节的密钥不足以保证任何安全。 您需要一个安全的哈希函数,如SHA2-256,其输出长度为32字节。SHA2可以很容易地在大多数系统上实现。
第一部分类似于“用户名”,第二部分类似于“密码” 您还需要一个“密钥”。此密钥是存储在软件中的字节数组。然后将“密钥”添加到“用户名”中。查找结果字符串的SHA2哈希。现在您有了一个输出,即原始文本的长度+32字节的散列。 您可以将此密钥用作唯一的可验证ID。
如果保密性和唯一性不是一个大问题,那么您可以使用输出为16字节的MD5。将纯文本更改为二进制,这样它可以在更少的字节中存储更多信息,而您的最终密钥将只有20个字节。您可以将其减少一点,但不建议减少到10字节。
|
![]() |
2
1
一种非常简单的方法是使用模乘逆,正如我在博客中所描述的: http://blog.mischel.com/2017/06/20/how-to-generate-random-looking-keys/ 其思想是将数字从1映射到某个数字x,以便每个数字在同一范围内生成唯一的值。例如,映射可能是:
这是一个可逆的计算。如果f(1)=>9875,然后g(9875)=>1.
在博客文章中显示的代码中,您可以通过修改
如果希望键为字母数字,则需要在生成整数后对其进行编码。然后,在用户输入后,在您尝试验证之前,您必须将它们解码回整数。
您可以将其扩展到多个设备,只需为每个设备提供其认为有效的起始值和结束值。无论如何,反向关键点计算是相同的。
|
![]() |
324 · 是否可以在某个数字下查找字典值的键? 2 年前 |
![]() |
dg99 · JSON密钥全局绑定 6 年前 |
|
Kaira Asia · Python在中编辑/重命名键名。json 6 年前 |
![]() |
Jonathan Mee · 多重映射的每个元素是否同时包含键和值? 7 年前 |
![]() |
Levi · 如何使用jq将多个输出对象组合成单个对象 7 年前 |
![]() |
kales · PHP:数组中作为键的值之一 7 年前 |
![]() |
Danielius · RC-6密文与非0向量不匹配 7 年前 |
![]() |
LucSpan · 当值为列表且项不唯一时,交换字典键和值 7 年前 |