如何将加密文件上载到Laravel服务器

如何将加密文件上载到Laravel服务器,laravel,encryption,.net-core,aes,Laravel,Encryption,.net Core,Aes,我试图加密一个文件,然后将其上传到我的Laravel服务器,在那里解密并存储在磁盘上。在客户端,我使用AesManaged(.NET5)加密我的文件。然后通过RESTAPI和RestSharp将文件上载到服务器 在服务器上,我使用的是内置的Crypt::decrypt(),它应该支持AES。我正在使用我的.env文件中的APP\u KEY在客户端生成加密密钥 出于某种原因,Laravel无法解密上载的文件,并引发异常,说明: 有效载荷无效 以前有人处理过吗?我遗漏了什么?通常,每当.env文件中

我试图加密一个文件,然后将其上传到我的Laravel服务器,在那里解密并存储在磁盘上。在客户端,我使用
AesManaged
(.NET5)加密我的文件。然后通过RESTAPI和RestSharp将文件上载到服务器

在服务器上,我使用的是内置的
Crypt::decrypt()
,它应该支持AES。我正在使用我的
.env
文件中的
APP\u KEY
在客户端生成加密密钥

出于某种原因,Laravel无法解密上载的文件,并引发异常,说明:

有效载荷无效


以前有人处理过吗?我遗漏了什么?

通常,每当.env文件中的APP_密钥未能解密散列(例如数据库中存储的密码)时,就会出现此错误,如果您更新APP_密钥,然后将其还原。

如果您使用的是跨语言加密解密,则由于加密密钥不匹配,laravel内置加密程序类将无法解密。我不建议您在其他平台上使用laravel key。 对于用户级加密,在数据库的users表中创建一列,并尝试为每个用户存储不同的加密密钥。 你可以解密


那么每个客户端都有相同的加密密钥(从
.env
)吗?还要确保双方使用相同的AES密码,在
config/app.php
laravel的默认值为
AES-256-CBC
Yes。这是个问题吗?我只是加密文件,因为我需要防止它被编辑或修改。(对不起,加密不是我的强项。我听说他们想让你动态生成密钥;我还没有尝试过,因为我现在还停留在一个更基本的问题上)你可以使用这个你说的由谁编辑或修改?米特姆?用户?@ml59:是的。客户端应用程序需要在成功上载文件之前将文件临时存储在客户端计算机上(如果失败,客户端应用程序将在一段时间后再次尝试上载)。在此期间,我们希望确保文件不会以任何方式被读取或修改,因此我们将以加密形式存储它。
protected function AESDecrypt($data)
{
    $aes = new \phpseclib\Crypt\AES(1);
    /**
    MODE_ECB = 1;
    MODE_CBC = 2;
    MODE_CFB = 3;
    **/
    $aes->setKeyLength(128);    // Valid key lengths are 128, 192, and 256
    $aes->setKey($this->KEY);  // replace key
    $aes->disablePadding();
    $decryptedData = $aes->decrypt(base64_decode($data));
    return $decryptedData;
}