PHP中的MySQL AES_解密似乎不起作用
更具体地说,通过在所有外部文件中显示数据库实例,您可以使用xcrud数据库实例:,我的表显示为使用$xcrud=xcrud::get_instance->table'users' 现在的问题是,我的所有数据都是使用AES_ENCRYPT和$salt加密的。我需要进行AES_解密,但不确定使用xcrud方法在何处或如何进行解密 我甚至可以在PHP中使用MySQL AES_DECRYPT函数,而只在functions.PHP中使用回调函数吗 编辑:我在PHP中尝试过这个方法,但是它显示了奇怪的字符���,��ŝA����,�在�新西兰��M�FPHP中的MySQL AES_解密似乎不起作用,php,mysql,aes,crud,Php,Mysql,Aes,Crud,更具体地说,通过在所有外部文件中显示数据库实例,您可以使用xcrud数据库实例:,我的表显示为使用$xcrud=xcrud::get_instance->table'users' 现在的问题是,我的所有数据都是使用AES_ENCRYPT和$salt加密的。我需要进行AES_解密,但不确定使用xcrud方法在何处或如何进行解密 我甚至可以在PHP中使用MySQL AES_DECRYPT函数,而只在functions.PHP中使用回调函数吗 编辑:我在PHP中尝试过这个方法,但是它显示了奇怪的字符�
function mysql_aes_key($key)
{
$new_key = str_repeat(chr(0), 16);
for($i=0,$len=strlen($key);$i<$len;$i++)
{
$new_key[$i%16] = $new_key[$i%16] ^ $key[$i];
}
return $new_key;
}
function decrypt_info($value)
{
$key = mysql_aes_key('mysalt');
$value = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_ECB, mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_DEV_URANDOM));
return rtrim($value, "0..10");
}
function decrypt_name($value)
{
$decrypted = decrypt_info($value);
return $decrypted;
}
FWIW,salt是使用单向散列函数进行的操作。使用具有AES等块加密功能的salt没有任何好处。感谢@BillKarwin欣赏FWIW:你知道这里有什么问题吗?你对密钥应用了什么样的填充?MySQL使用PKCS7填充密钥。谢谢@Jack,我实际上没有使用填充。当我插入时,它是这样的:AES_ENCRYPT.“$email.”、“$salt.”我不知道为什么字符串不能正确解密。但如果是我,我会用我用来加密的接口解密。因此,如果我使用MySQL的AES_加密,那么我将坚持使用MySQL的AES_解密。原因是我不知道MySQL和PHP之间加密算法及其选项(如填充)的实现是否一定相同。或者,即使这在今天是真的,也许MySQL或PHP的更高版本会改变它的实现。