我认为这很简单,但我找不到一个简单的解决方案..
有没有办法用简单的密码对字符串进行编码和解码?像这样的东西:
$encoded = stringEncrypt('someText','simpleKey');
echo stringDecrypt($encoded,'simpleKey'); //outputs someText;
我试过这个但没有运气:
function lime_encrypt($data,$key)
{
return base_convert(bin2hex($data),16,10) * base_convert(bin2hex($key),16,10) ;
}
function lime_decrypt($data,$key)
{
return pack("H*",base_convert($data/base_convert(bin2hex($key),16,10),10,16));
}
我认为这是因为乘法不返回整数,而是返回数学表达式 6.28414834514E+25
知道如何实现吗?
编辑
我重用了在堆栈溢出时发现的另一个代码,结果如下:
function lime_encrypt($data,$key)
{
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $data, MCRYPT_MODE_CBC, md5(md5($key))));
}
function lime_decrypt($data,$key)
{
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($data), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
但我最终得到一个致命错误:在 linux centOS 上使用 php > 5 调用未定义的函数 mcrypt_encrypt()。
所以我宁愿保持简单和可移动到其他主机......
解决方案?
最后,我正在使用这个,在博客上找到:
function lime_encrypt($data,$key)
{
return openssl_encrypt($data, 'AES-128-CBC', $key,0,'fgrgfvcfghtfdrfg');
}
function lime_decrypt($data,$key)
{
return openssl_decrypt($data, 'AES-128-CBC', $key,0,'fgrgfvcfghtfdrfg');
}