首页
学习
活动
专区
圈层
工具
发布

PHP加密
EN

Stack Overflow用户
提问于 2014-05-21 16:30:05
回答 1查看 166关注 0票数 0

我对PHP非常陌生,我尝试对mp3文件进行aes加密,使用java中的IV和密钥存储库中的密钥,我使用BASE64 // System.out.println(DatatypeConverter.printBase64Binary(IV)); iv接收了字符串形式的密钥和IV,这里是字节数组。这里是我的php代码的一部分,应该加密文件。

代码语言:javascript
复制
$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);
 }

但是加密不起作用,没有创建新文件。无论如何,我不认为我做错了什么,所以如果有人有任何建议,我会为他们做的很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-23 22:01:51

你的钥匙和iv似乎是base64encoded。在将它们传递给mcrypt_generic_init之前,尝试对它们进行解码。

代码语言:javascript
复制
$key = base64_decode('K/JED6M3WiSwke2ZZHvDInbRkUCI5lLk292ti9Bazmw=');
$iv =  base64_decode('AAAAAQQFBgcAAAAAAAAAAQ==');

还要注意的是,您的二进制.mp3数据将被填充空字符,以便它适合密码,并且除非您处理这个问题(这不是您正在做的),否则您的解密永远不会是二进制安全的。因此,我建议使用此PHP文件加密库,而不是重新发明轮子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23788984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档