Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的MySQL AES_解密似乎不起作用_Php_Mysql_Aes_Crud - Fatal编程技术网

PHP中的MySQL AES_解密似乎不起作用

PHP中的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中尝试过这个方法,但是它显示了奇怪的字符�

更具体地说,通过在所有外部文件中显示数据库实例,您可以使用xcrud数据库实例:,我的表显示为使用$xcrud=xcrud::get_instance->table'users'

现在的问题是,我的所有数据都是使用AES_ENCRYPT和$salt加密的。我需要进行AES_解密,但不确定使用xcrud方法在何处或如何进行解密

我甚至可以在PHP中使用MySQL AES_DECRYPT函数,而只在functions.PHP中使用回调函数吗

编辑:我在PHP中尝试过这个方法,但是它显示了奇怪的字符���,��ŝA����,�在�新西兰��M�F

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的更高版本会改变它的实现。