这个很好理解:
a b 按位异或得 c,那么 a c 按位异或得 b。
这样 a 为密匙 b为内容,c为加密过的内容。
下面是我以前写的(以前没看过你发的这个:),谢谢分享)。一个简单基于密匙的加解密类
http://blog.csdn.net/SysTem128/archive/2008/04/17/2301108.aspx
a b 按位异或得 c,那么 a c 按位异或得 b。
这样 a 为密匙 b为内容,c为加密过的内容。
下面是我以前写的(以前没看过你发的这个:),谢谢分享)。一个简单基于密匙的加解密类
http://blog.csdn.net/SysTem128/archive/2008/04/17/2301108.aspx
这个理解是错误的 导致LZ无法理解密钥的生成过程 从明文MD5码第9个字符起取10个字符密钥分私钥和公钥两部分
公钥 $secret_string = $webdb[mymd5].'5*j,.^&;?.%#@!';
私钥 加密 $md5code=substr(md5($string),8,10);解密 $md5code=substr($string,-10);
公钥和私钥组合在一起 MD5得到密钥加密过程 LZ了解了 但不明白私钥是怎么保存的$code = ($action == "DE" ? (substr(md5($code),8,10)==$md5code?$code:NULL) : base64_encode($code)."$md5code");
如果是加密 base64_encode($code)."$md5code") 把密文编码 并把密钥附在最后得到密文如果是解密 substr(md5($code),8,10)==$md5code?$code:NULL 验证私钥是否正确3元运算 写起来好看 但读起来不好理解 再读代码的时候可以试着把3元运算改写成if嵌套配合换行和缩进 就好理解了
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中不同的位设为 1。 不同的东西么。