これは簡単だと思ったのですが、これに対する簡単な解決策が見つかりません..
文字列をエンコードし、単純なパスフレーズで文字列をデコードする方法はありますか? このようなもの:
$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");
}
しかし、私は Fatal error: Call to undefined function mcrypt_encrypt() using php > 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');
}