有什么办法可以反转这个按位函数吗?
Is there any way to reverse this bitwise funtion?
我被要求通过创建一个新程序来加密密码,我的想法是使用位来使用明显不相关的字符来更改输入密钥的每个字符,所以我编写了这个函数:
(我正在使用 PHP 代码):
function CBS($digits, $n_times) {
$mask = 0x7FFFFFFF;
$digits = intval($digits);
if($n_times > 0) {
$digits = ($digits<<$n_times%32) & (($digits>>(32-$n_times%32)) & ($mask>>(31-$n_times%32)));
}elseif($n_times < 0) {
$n_times = abs($n_times);
$digits = (($digits>>$n_times%32) & ($mask >> (-1+$n_times%32))) | ($digits<<(32-$n_times%32));
}
return decbin($digits);
}
当然,在我加密了我的密码之后,我应该能够解密它。
有什么办法吗?
你不用写代码给我,如果你也能用文字解释给我听就好了。
"Of course after I encrypted my password I should be able to decrypt it." - 根本错了!。正确的加密函数(即散列函数)不应具有反向函数。非常简单的识别算法:
1. 用户输入密码
2. 使用加密函数从密码中获取哈希值 (entered_hash=f(password))
3.比较entered_hash和right_hash_stored
从不 存储密码,只存储哈希值!
我认为,如果你希望你的加密函数具有反向,它应该由具有反向的函数组成,所以 AND 和 OR 不是这样,但 ROT 和 XOR 是。
所以你只需要 - ROT/XOR 的序列(对于 XOR 掩码,你可以使用之前的序列步骤的加密值,在这种情况下,它也必须被保存)
我被要求通过创建一个新程序来加密密码,我的想法是使用位来使用明显不相关的字符来更改输入密钥的每个字符,所以我编写了这个函数:
(我正在使用 PHP 代码):
function CBS($digits, $n_times) {
$mask = 0x7FFFFFFF;
$digits = intval($digits);
if($n_times > 0) {
$digits = ($digits<<$n_times%32) & (($digits>>(32-$n_times%32)) & ($mask>>(31-$n_times%32)));
}elseif($n_times < 0) {
$n_times = abs($n_times);
$digits = (($digits>>$n_times%32) & ($mask >> (-1+$n_times%32))) | ($digits<<(32-$n_times%32));
}
return decbin($digits);
}
当然,在我加密了我的密码之后,我应该能够解密它。
有什么办法吗?
你不用写代码给我,如果你也能用文字解释给我听就好了。
"Of course after I encrypted my password I should be able to decrypt it." - 根本错了!。正确的加密函数(即散列函数)不应具有反向函数。非常简单的识别算法:
1. 用户输入密码
2. 使用加密函数从密码中获取哈希值 (entered_hash=f(password))
3.比较entered_hash和right_hash_stored
从不 存储密码,只存储哈希值!
我认为,如果你希望你的加密函数具有反向,它应该由具有反向的函数组成,所以 AND 和 OR 不是这样,但 ROT 和 XOR 是。 所以你只需要 - ROT/XOR 的序列(对于 XOR 掩码,你可以使用之前的序列步骤的加密值,在这种情况下,它也必须被保存)