有什么安全的加密算法可以用这种方式吗?
<?php
$message="Hi there!";
$key1="ablablabla";
$key2="fooboomoohoo";
$tmp=encrypt($message,$key1);
$tmp=encrypt($tmp,$key2);
$tmp=decrypt($tmp,$key1);
$result=decrypt($tmp,$key2);
echo "'"".$message."'" is the same as '"".$result."'"";
?>
它应该这样工作:
用户想向服务器发送加密消息,所以他用他的密钥对其进行加密
服务器收到一条加密的消息,所以他用自己的密钥再次加密,并将其发送回
用户用密钥解密消息并将其发送回
最后,服务器解码消息
像RC4这样的流密码呢?
加密和解密涉及与PRNG的输出进行XOR。(实际上解密和加密是一样的。)
$tmp=encrypt($message,$key1); // tmp = P ^ A
$tmp=encrypt($tmp,$key2); // tmp = p ^ A ^ B
$tmp=decrypt($tmp,$key1); // tmp = p ^ A ^ B ^ A = p ^ B
$result=decrypt($tmp,$key2); // result = p ^ B ^ B = p
您似乎在询问是否存在具有交换密钥的加密方案。例如,请参阅这个stackoverflow问题。
当然存在这样的交换系统。一个简单的例子是Caesar Cypher(即将字母表中的字母移动n位置,其中n是键)。就safe方案而言——这里的safe相当主观——密钥的交换性质确实存在于更复杂的层面上。这里可以看到这样一个例子,它讨论了为什么RSA对公共n是交换的。(注意:普通n不常见。)