You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python实现的图片加解密方法转换为JavaScript版本

实现方案

逻辑说明

原Python代码的逻辑非常明确:

  • 固定加密密钥为48
  • 仅对输入字节数组的前10个字节做异或运算,超过10个字节的部分完全不做处理
  • 异或属于对称运算,所以同一个函数既可以做加密也可以做解密

JavaScript 实现代码

和Python逻辑1:1对齐的实现如下,入参对应Python的bytearray类型使用前端的Uint8Array:

function encryptedDecryptedImage(image) {
    const key = 48;
    let count = 0;
    for (let index = 0; index < image.length; index++) {
        count++;
        image[index] = image[index] ^ key;
        if (count === 10) {
            break;
        }
    }
    return image;
}

前端使用示例

以下是前端读取本地图片后加密上传的常见使用场景:

const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', async (e) => {
    const file = e.target.files[0];
    // 读取文件为二进制缓冲
    const buffer = await file.arrayBuffer();
    // 转换为Uint8Array类型,匹配函数入参要求
    const imageBytes = new Uint8Array(buffer);
    // 调用加密方法
    const processedBytes = encryptedDecryptedImage(imageBytes);
    // 后续把processedBytes封装为二进制流或者FormData发送给后端接口即可
})

注意事项

  • 必须确保传入函数的参数是Uint8Array类型,不要直接传入ArrayBuffer或者普通JS数组,否则运算结果会和后端不一致
  • 和Python版本行为一致,加密和解密都可以调用同一个函数,对同一段数据执行两次函数即可还原原始内容
  • 如果前端需要解密后端返回的加密图片,直接调用同一个函数处理返回的二进制字节即可正常渲染

内容的提问来源于stack exchange,提问作者Ali Ouda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:24:03