Зашифруйте / расшифруйте бинарный mp3 с mcrypt, пропуская mimetype - PullRequest
1 голос
/ 19 марта 2012

У меня есть скрипт, который читает файл mp3 и шифрует его, я хочу иметь возможность расшифровать этот файл и преобразовать его в base64, чтобы он мог воспроизводиться в формате html5.

Ключ 1 будет сохранен наpage и static, key2 будет уникальным для каждого файла, для тестирования я использовал:

$key1 = md5(time());
$key2 = md5($key1.time());

Вот мой код php кодирования:

//Get file content
$file = file_get_contents('test.mp3');
//Encrypt file
$Encrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key1, $file, MCRYPT_MODE_CBC, $key2);
$Encrypt = trim(base64_encode($Encrypt));
//Create new file
$fileE = "test.mp3e"; $fileE = fopen($file64, 'w') or die("can't open file");
//Put crypted content
fwrite($fileE, $Encrypt);
//Close file
fclose($fileE);

Вот код, который не работает (декодированный файл того же размера, но без mimetype):

//Get file content
$fileE = file_get_contents('test.mp3e');
//Decode
$fileDecoded = base64_decode($fileE);
//Decrypt file
$Decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key1, $fileDecoded, MCRYPT_MODE_CBC, $key2);
$Decrypt = trim($Decrypt);
//Create new file
$file = "test.mp3"; $file = fopen($file, 'w') or die("can't open file");
//Put crypted content
fwrite($file, $Decrypt);
//Close file
fclose($file);

1 Ответ

1 голос
/ 19 марта 2012

Полагаю, вы указали на неправильный файл, посмотрите на этот код:

$fileE = "test.mp3e"; $fileE = fopen($file64, 'w') or die("can't open file");

Затем проверьте файл, который вы пытаетесь расшифровать:

$fileE = file_get_contents('test.mp3e');

Я думаю, что вы ошиблись в имени файла. Не уверен, что не смог увидеть значение переменной $ file64. Хотя вы назначили значение имени файла для $ fileE как «test.mp3e», оно все равно получит то, что вы определили для $ file64. :)

...