簡體   English   中英

PHP AES加密

[英]PHP aes encryption

我對PHP相當陌生,我正在嘗試對mp3文件進行AES加密,使用來自Java的IV和來自密鑰庫的密鑰,我使用BASE64 // System.out.println(DatatypeConverter.printBase64Binary(IV));以字符串形式獲取密鑰和iv // 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字符,以便適合密碼,除非您處理此問題(您沒有這樣做),否則解密絕對不會是二進制安全的。 因此,我建議不要使用這個PHP File加密庫 ,而不是浪費時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM