【发布时间】:2015-04-23 16:48:48
【问题描述】:
您好,我正在尝试生成一个类似的 sha256 十六进制,但我似乎找不到匹配的。我想使用随机密钥生成几乎任何密码。
在这种情况下,我使用 test123 : ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae
这是我的代码:
print "Final Hash: " . generateHash("ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae", "fx4;)@?%") . chr(10);
sub generateHash {
my ($strPass, $strLoginKey) = @_;
my $strHash = encryptPass(uc($strPass), $strLoginKey);
return $strHash;
}
sub encryptPass {
my ($strPassword, $strKey) = @_;
my $strSalt = 'Y(02.>\'H}t":E1';
my $strSwapped = swapSHA($strPassword);
print "First Swap: " . $strSwapped . chr(10);
my $strHash = sha256_hex($strSwapped . $strKey . $strSalt);
print "Hashed Into: " . $strHash . chr(10);
my $strSwappedHash = swapSHA($strHash) . chr(10);
print "Last Swapped: " . $strSwappedHash . chr(10);
return $strSwappedHash;
}
sub swapSHA {
my ($strHash) = @_;
my $strSwapped = substr($strHash, 32, 32);
$strSwapped .= substr($strHash, 0, 32);
return $strSwapped;
}
任何帮助将不胜感激!
我得到的输出:
Original Hash: ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae
Hashed Into: 34b6bdd73b3943d7baebf7d0ff54934849a38ee09c387435727e2b88566b4b85
Last Swapped: 49a38ee09c387435727e2b88566b4b8534b6bdd73b3943d7baebf7d0ff549348
Final Hash: 34b6bdd73b3943d7baebf7d0ff54934849a38ee09c387435727e2b88566b4b85
我正在尝试使输出的最终值与输入相同
Final Hash: ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae
我想通过反转“Hashed Into”值来做到这一点。
【问题讨论】:
-
您能澄清一下您要生成类似哈希的内容吗?我担心你在这里的意图违反了使用像 Sha 这样的算法的意图 - 但很难理解你在这里真正想要什么。
-
我希望生成的哈希与我提到的第一个哈希匹配
test123。这是我的一个项目,是为了防止暴力破解。 -
我不确定我是否理解。澄清一下,您希望
generateHash( "ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae", "fx4;)@?%" )的输出为"test123"? -
不,我希望它是
ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae -
你当然可以只返回第一个参数。您认为
encryptPass函数中的哪一部分操作正在反转哪个哈希?您可能对安全哈希加密/解密数据有误解——它们不会。哈希是单向函数,不可能倒退,只能通过蛮力猜测。