我认为这很简单,但我找不到一个简单的解决方案..
有没有办法对字符串进行编码并使用简单的密码短语解码字符串? 像这样的人:
$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");
}
但最终导致致命错误:使用php>调用未定义的函数mcrypt_encrypt() 5 on linux centOS。
所以我宁愿保持简单,也可以移动到其他主机......
最后,我在博客上找到了这个:
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');
}
答案 0 :(得分:0)
有没有一种方法可以通过简单的密码对字符串进行编码和解码?
签出defuse/php-encryption。具体来说,KeyProtectedByPassword
功能。
如果您使用的是PHP 7.2,还可以结合使用sodium_crypto_secretbox()
和base64_encode()
(与display text # file name or URL # any reference within the file
组合使用)以获得一致(但不可互操作)的结果。