**您不应加密密码,而应使用bcrypt之类的算法对密码进行哈希处理。不过,这是加密/解密的方法:
$key = 'password to (en/de)crypt';$string = ' string to be encrypted '; // note the spaces
加密:
$iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);$encrypted = base64_enpre( $iv . mcrypt_encrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), $string, MCRYPT_MODE_CBC, $iv ));
解密:
$data = base64_depre($encrypted);$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));$decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv ), "");
警告 :上面的示例对信息进行加密,但不对密文进行身份验证以防止篡改。你应该 不
依赖于安全性未经验证的加密所提供易受填充神谕攻击以来,特别是代码。
另外,不要只对加密密钥使用“密码”。 加密密钥是随机字符串。
3v4l.org上的演示:
echo 'Encrypted:' . "n";var_dump($encrypted); // "m1DSXVlAKJnLm7k3WrVd51omGL/05JJrPluBonO9W+9ohkNuw8rWdJW6NeLNc688="echo "n";echo 'Decrypted:' . "n";var_dump($decrypted); // " string to be encrypted "
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)