如何在PHP中使用简单的密码短语对字符串进行编码和解码?

时间:2013-09-18 16:41:14

标签: php decode encode encryption

我认为这很简单,但我找不到一个简单的解决方案..

有没有办法对字符串进行编码并使用简单的密码短语解码字符串? 像这样的人:

$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');
}

1 个答案:

答案 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组合使用)以获得一致(但不可互操作)的结果。