【发布时间】:2020-12-21 01:15:04
【问题描述】:
Codewars 上有一个挑战,要求您破译 SHA-1 哈希。
(我认为)我需要 Crypto 才能这样做。我找到了this example 如何使用 Crypto 从 JS 中的字符串创建 SHA-1 哈希:
let x = "Geek"
function createSha1 (x) {
const crypto = require('crypto'),
let hashPwd = crypto.createHash('sha1').update(x).digest('hex');
return hashPwd;
}
那么基本上我需要做相反的事情,对吗?参数以SHA-1 hash 的形式提供给函数,因此我们需要将其转换为字符串 - 如何解码SHA-1 哈希?因为根据this article,你不能。
朋友建议我需要这样做
生成哈希,然后开始循环并为“a”、“b”、“c”、……“aa”、“ab”、“ac”……等生成它,并在哈希匹配时停止并返回它。
那么要生成“正常”哈希,我会执行以下操作:
function stringToHash(string) {
let hash = 0;
if (string.length == 0) return hash;
for (let i = 0; i < string.length; i++) {
let char = string.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash;
}
return hash;
}
当然,我不知道我应该使用什么字符串作为参数,因为 Codewars 已经将 SHA-1 哈希作为参数提供给我们:e6fb06210fafc02fd7479ddbed2d042cc3a5155e。
这是本网站的本质,但我不想立即发布对这一挑战的答案。如果可能,请在可行的解决方案之前先给出提示/方向。
谢谢!
【问题讨论】:
标签: javascript hash