首页 > 解决方案 > 使用 window.crypto.subtle.decrypt 在浏览器中解密 AES 加密图像

问题描述

业务用例:

在我的应用程序中,我允许用户上传图片。现在在将其存储到文件系统之前,我希望对图像进行 aes 加密。为了在浏览器中显示图像,我想在浏览器中动态解密它们。所以基本上它们将在静止时被加密,并在播放时被解密。

我已经实施了什么:

我使用开放 ssl 和 AES 265 CBC 算法加密了图像。下面是我使用的命令

openssl enc -in image-original.jpg -out image-enc.jpg -e -aes256 -k 26ca44bbeb4b6608437737970cbfe0db

在前端,我向服务器发送 HTTP 调用以将加密图像读取为 blob,然后我尝试使用 window.crypto.subtle.decrypt 函数解密该 blob。下面是代码

window.crypto.subtle.decrypt(
        {
            name: "AES-CBC",
            length: 256
        },
        "26ca44bbeb4b6608437737970cbfe0db",
        "blob that we fetched from server"
    ).then((result) => {
        debugger;
    });

但是我在浏览器控制台中遇到了以下列出的错误

"TypeError: Failed to execute 'decrypt' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'."

问题:

我有2个问题请教各位,

  1. 帮我解决这个错误,因为我在互联网上找不到太多帮助
  2. 如果您过去做过此类工作,请建议我更好的方法或分享您的经验。

标签: opensslaesencryption-symmetricsubtlecrypto

解决方案


推荐阅读