有人可以就“使用密钥对 php5 中的 utf-8 字符串进行简单加密/解密”这个主题给我建议吗?关于独立图书馆的一些建议?(不依赖于 32/64 位机器)。
$encryptedTextUTF8 = simpleEncrypt($originalTextUTF8, $secret);
echo simpleDecrypt($encryptedTextUTF8, $secret); // outputs $originalTextUTF8
有人可以就“使用密钥对 php5 中的 utf-8 字符串进行简单加密/解密”这个主题给我建议吗?关于独立图书馆的一些建议?(不依赖于 32/64 位机器)。
$encryptedTextUTF8 = simpleEncrypt($originalTextUTF8, $secret);
echo simpleDecrypt($encryptedTextUTF8, $secret); // outputs $originalTextUTF8
使用 mcrypt 扩展:http ://us.php.net/manual/en/book.mcrypt.php 类似下面的东西可能是可行的:
$pass = 'password_string_to_be_encrypted';
$string = 'password_string_to_be_decrypted';
$salt = 'your_salt';
$pepper = 'your_extra_salt';
$encrypted = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $salt . $pass . $pepper ), $string, MCRYPT_MODE_CBC, md5( md5( $salt . $pass . $pepper ))));
$decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5($salt . $pass . $pepper), base64_decode( $string ), MCRYPT_MODE_CBC, md5( md5( $salt . $pass . $pepper))), "\0");
编辑:证明是错误的,我建议删除加密的 md5 部分。至于什么更好,我还不知道,但是当我有足够的时间调查时,我会尝试更新我的帖子..对不起!:)
PHP 字符串不知道(或关心)它们的字符编码是什么。它们只是字节的集合。这使您在这里完全不用担心 UTF-8。
因为您要求进行对称密钥加密,所以您可能需要使用mcrypt 扩展。它有多种可用的密码,包括 AES(“Rijndael”)。Mcrypt 本身并不关心它是在 32 位还是 64 位机器上。
我不打算提供示例代码,因为使用加密需要一些重要的知识,我不确定我是否可以仅在代码中正确地向您解释,并且复制粘贴加密代码是一个坏主意。
了解块密码操作模式的工作方式将帮助您选择适合您正在做的事情的模式。如果您希望用其他语言开发的程序处理您的加密数据,那么这种理解也是必要的,因为它们将使用不同的默认密码模式和不同的填充方案。