- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想从代表数字的字符串中生成一个新的唯一的 20 位数字字符串
例如:
var uid = key.pseudoHash("00000000000000000000"), // "45021-78054-45021-16875"
uid = key.pseudoHash("00000000000000000001"), // "15751-40213-97315-65348"
..
uid = key.pseudoHash("99999999999999999999"); // "01197-95791-58880-58368"
我怎样才能拥有这个不产生碰撞并且可以逆转的伪哈希函数?
最佳答案
许多方法中的一种是使用简单的 substitution cipher :
// guaranteed random!
var key = [1, 3, 3, 1, 8, 3, 5, 7, 2, 9, 0, 2, 8, 2, 9, 7, 7, 8, 1, 7];
function test(str) {
str = str.split("");
for(var i = 0; i < str.length; i++) {
str[i] = (Number(str[i]) + key[i]) % 10
}
return str.join("");
}
console.log(test("00000000000000000000")); // 13318357290282977817
console.log(test("00000000000000000001")); // 13318357290282977818
console.log(test("99999999999999999999")); // 02207246189171866706
为了更随机,你可以添加更多confusion and diffusion步骤。
这很容易被任何人逆转。对于安全算法,请研究密码学。
关于javascript - 为 20 位数字间隔生成唯一且可逆的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235817/
有人知道符合上述所有条件的算法吗?我需要指定一个种子编号,以及我希望输出数字落入的范围(这也是输入数字所在的范围)。这个函数还需要有一个反向操作的对应物。 例如: 我传递了种子 5 和范围 5-35,
如何使递归重命名操作(Linux,使用 python)可逆? 我想在Linux下使用python编写一个程序,该程序执行以下任务:批量递归重命名文件夹中的所有文件,如果文件名有子字符串X,则重命名为Y
我的数组中有三种颜色。最初,我被要求创建一个函数,该函数只需要第一个函数并将其附加到末尾或执行相反的操作,因此我创建了这个函数: // Get our colours var colours = sc
当我错误地删除了contenteditable div中的一些文本时,我可以使用Ctrl + z将其反转。 但是在我使用 javascript 做了一些改变之后。我无法使用 Ctrl + z 返回到之
我有一个 PHP 网络服务,它当前返回一个 zip 存档作为其唯一输出。我正在使用 file_get_contents 从磁盘读取 zip 存档并将其作为响应的主体发回。 我希望它以 JSON 格式返
让我解释一下:在我的用例中,系统为我提供了很多大小可以变化的字符串(字符数;长度),有时它可能非常大!问题是我必须将这个字符串保存在“SQL Server”数据库表的列中,坏消息是我不允许在这个数据库
我是一名优秀的程序员,十分优秀!