我对PHP相当陌生,我正在尝试对mp3文件进行AES加密,使用来自Java的IV和来自密钥库的密钥,我使用BASE64 // System.out.println(DatatypeConverter.printBase64Binary(IV));以字符串形式获取密钥和iv,这里是字节数组。这是我的PHP代码的一部分,应该加密文件

$handle = fopen($file, "r");
$contents = fread($handle, filesize($file));
fclose($handle);



$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CTR, '');

$key = 'K/JED6M3WiSwke2ZZHvDInbRkUCI5lLk292ti9Bazmw=';
$iv =  'AAAAAQQFBgcAAAAAAAAAAQ==';


// Encrypt
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
    $encrypted = mcrypt_generic($cipher, $contents);
    mcrypt_generic_deinit($cipher);
    $info = pathinfo($file);
 $nowa = $info['dirname']
        . DIRECTORY_SEPARATOR
        . $info['filename']
        . '.'
        . "mp3enc";
        echo $nowa;
        file_put_contents($nowa,$encrypted);
 }


但是加密不起作用,没有创建新文件。
无论如何,我看不到我在做什么错,所以如果有人有任何建议,我会很感激他们

最佳答案

您的密钥和iv似乎是base64编码的。在将它们传递给mcrypt_generic_init之前,请尝试对其进行解码。

$key = base64_decode('K/JED6M3WiSwke2ZZHvDInbRkUCI5lLk292ti9Bazmw=');
$iv =  base64_decode('AAAAAQQFBgcAAAAAAAAAAQ==');


还要注意,您的二进制.mp3数据将填充NULL字符,以便适合密码,除非您处理此问题(您没有这样做),否则解密绝对不会是二进制安全的。因此,建议不要使用this PHP File encryption library来重新发明轮子。

关于java - PHP AES加密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23788984/

10-11 22:30
查看更多