版权声明:原创文章欢迎转载,不过要记得说明出处
其实用到的就是异或加密,随机生成key,异或两次就可以得到原字符串。只要你的key不泄露,xor
加密是不能被解密的。虽然说md5
名义上也是不能被技术解密,但是我知道'撞库'还是可以解密的。
1.MD5加密字符串
$str = md5('password');
2.生成key
/**
* 获取加密文本的key
*/
function getKey($count = 10) {
$key = '';
$str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = '';
for($i = 0; $i < $count; $i++) {
$key = mt_rand(0, mb_strlen($str));
$result .= $str[$key];
}
return $result;
}
$key = getKey(mb_strlen($str));
3.xor加密
/**
* 异或加密
*/
function xorString($str, $key = '') {
if(empty($key)) {
return $str;
}
$result= '';
for($i=0; $i < mb_strlen($str); $i++) {
$result .= $str[$i] ^ $key[$i];
}
return $result;
}
$result = xorString($str, $key);
4.xor还原
$str = xorString($result, $key);
5.升级
有的时候不是加密密码而且文本,需要解密后知道文本内容,这个时候就不能用md5第一步加密,只需要把文本转为json。它的密码集是UTF-8编码就避免汉字乱码,而且也支持数组等。
$str = json_encode('动手测试一下吧');
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。