Php 有没有办法扭转这种按位函数?

Php 有没有办法扭转这种按位函数?,php,function,encryption,bit-manipulation,reversing,Php,Function,Encryption,Bit Manipulation,Reversing,我被要求通过创建一个新的过程来加密密码,我的想法是使用bits将输入密钥的每个字符更改为明显不相关的字符,因此我编写了这个函数: (我正在使用PHP代码): 函数CBS($digits,$n_次){ $mask=0x7FFFFFFF; $digits=intval($digits); 如果($n_次>0){ $digits=($digits(32-$n_乘以%32))&($mask>>(31-$n_乘以%32)); }elseif($n_次>$n_倍%32)和($mask>>(-1+$n_倍%3

我被要求通过创建一个新的过程来加密密码,我的想法是使用bits将输入密钥的每个字符更改为明显不相关的字符,因此我编写了这个函数:

(我正在使用PHP代码):

函数CBS($digits,$n_次){
$mask=0x7FFFFFFF;
$digits=intval($digits);
如果($n_次>0){
$digits=($digits(32-$n_乘以%32))&($mask>>(31-$n_乘以%32));
}elseif($n_次<0){
$n_次=绝对值($n_次);
$digits=($digits>>$n_倍%32)和($mask>>(-1+$n_倍%32)))|($digits“当然,在我加密密码后,我应该能够解密它。”-根本错误!正确的加密函数(即哈希函数)不应该有反向函数。非常简单的识别算法:
1.用户输入密码
2.使用加密函数从密码中获取哈希(输入的\u hash=f(密码))
3.将输入的\u散列与存储的右\u散列进行比较
从不存储密码,只存储哈希

我认为,如果你想要你的加密函数有反向,它应该由有反向的函数组成,所以AND和OR不是这样,但是ROT和XOR是这样。
所以你所需要的就是ROT/XOR的squense(对于XOR掩码,你可以使用previos squense step的加密值,在这种情况下,它也必须被保存)

我也会用哈希法,但我的老师让我正确地加密,所以我想我必须这样做……这可能是你认证规范的一部分,所以我不能因此责备你,尽管你正在做的任何认证的考试委员会真的不应该在密码的范围内教授这一点。好吧,是我们中的一个创建最安全的算法会得到最好的分数,所以我会尽力做到最好!最安全的方法是散列,但听起来你没有这个选项。你对AND运算符的使用是不容易逆转的。XOR是加密的关键构建块,正是因为XOR(Y XOR X)=Y。所以它是可逆的。你可以通过在Feistel结构中实现它来使用不可逆结构的变体。你应该在谷歌上搜索它,因为它将帮助你创建一个更强大的算法。仍然不能用于严肃的应用程序,但具有良好PRF的Feistel结构应该是一个不错的教室加密算法嗯。是的,我完全知道它不应该被加密,以及如何验证输入的密码是否与散列密码匹配,但出于某种原因,这要求在加密后将其反转。当然这不是一项专业工作。对于ROT,你是指循环移位吗?是的:例如,有一个列表[2,3]-每个值表示数字到循环移位(设为左移位)和以下XOR,即数字到移位XOR移位结果。加密步骤:加密步骤(顺序=[2,5]):en1=(传递2。好的,谢谢,我想我会尝试你建议的方式!