我正在使用以下函数对WordPress插件中的wordpress帖子内容进行加密和解密:
public static function afz_encrypt_decrypt( $action, $string ) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = '12345678901234567890123456789012';
$iv_size = 16;
if ( $action == 'encrypt' ) {
$encrypt_iv = mcrypt_create_iv( $iv_size, MCRYPT_DEV_URANDOM );
$output = openssl_encrypt( $string, $encrypt_method, $secret_key, 0, $encrypt_iv );
$output = base64_encode( $encrypt_iv . $output );
} else if ( $action == 'decrypt' ) {
$decrypt_iv = substr( base64_decode( $string ), 0, $iv_size );
$output = stripslashes( openssl_decrypt( substr( base64_decode( $string ), $iv_size ), $encrypt_method,
$secret_key,
0,
$decrypt_iv ) );
if ( false == $output ) {
$output = $string;
}
}
return $output;
}
如果内容仅为零字符,则上述代码无法解密文本!!!
它返回加密生成的编码字符串。
有什么想法吗?
答案 0 :(得分:1)
if ( false == $output ) {
$output = $string;
}
检查输出是否为" falsy"如果是,则将$output
设置回原始加密字符串。 "0"
是假的。用
if ( false === $output ) {
检查输出是否实际为假而不仅仅是假的。
要更好地解释什么是和不是假,请参阅this documentation page。