Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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
用AES算法在Php中加密图像_Php_Encryption_Cryptography - Fatal编程技术网

用AES算法在Php中加密图像

用AES算法在Php中加密图像,php,encryption,cryptography,Php,Encryption,Cryptography,我试图在上传时使用AES 128位加密图像,但文本被加密和解密,但我不知道如何在上传前加密图像。以下是我正在使用的AES代码: 代码: 文件名: 问题在于您没有加密图像,只加密文件名。因此,您需要从临时文件中读取文件内容,加密内容并将内容写入目标文件。随后将删除临时文件 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "

我试图在上传时使用AES 128位加密图像,但文本被加密和解密,但我不知道如何在上传前加密图像。以下是我正在使用的AES代码:

代码:


文件名:


问题在于您没有加密图像,只加密文件名。因此,您需要从临时文件中读取文件内容,加密内容并将内容写入目标文件。随后将删除临时文件

if (file_exists("upload/" . $_FILES["file"]["name"]))
  {
    echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
    $fileData = file_get_contents($_FILES["file"]["tmp_name"]);
    $aes = new AES($fileData, $inputKey, $blockSize);
    $encData = $aes->encrypt();
    file_put_contents("upload/" . $_FILES["file"]["name"] . "jpg", $encData);
    unlink($_FILES["file"]["tmp_name"]);
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"] . "jpg";
  }
注:

  • 加密的文件是Base64编码的,这可能不是您想要的,但由于您使用的是此AES实现,因此这是一致的
  • 未加密的文件通过网络发送(当您不使用SSL/TLS时),并以未加密的形式在临时文件夹中短期存储

在上传之前意味着在浏览器中,但我只看到用于加密的php代码。你想完成什么?我真的希望您没有要求我们将php代码移植到js,因为它将被关闭。不,我想将加密图像保存在文件夹中……好的,那么您看到的错误是什么?在仅使用php上载之前,不能对文件进行加密。该文件以明文形式上传到临时文件夹,只有这样您才能对该文件进行加密。请您给我一些如何实现该文件的提示,因为我到处都搜索过,唯一得到的是加密文本而不是图像。谢谢你的回复我正在使用以下链接
if (file_exists("upload/" . $_FILES["file"]["name"]))
  {
    echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
    $fileData = file_get_contents($_FILES["file"]["tmp_name"]);
    $aes = new AES($fileData, $inputKey, $blockSize);
    $encData = $aes->encrypt();
    file_put_contents("upload/" . $_FILES["file"]["name"] . "jpg", $encData);
    unlink($_FILES["file"]["tmp_name"]);
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"] . "jpg";
  }