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

OpenPGP JS升级至5.3后如何实现AES EAX解密操作

OpenPGP JS 5.3版本EAX解密实现方法

OpenPGP JS 5.x 版本对生产构建的公开API做了裁剪,默认不对外暴露内部底层密码学原语。测试目录里直接引用源码路径导入EAX的写法仅在仓库本地开发测试时可用,npm发布的生产构建包不支持这种导入方式。

新旧版本差异

4.10.1版本中使用的全局window.openpgp.crypto.eax异步调用,在5.x版本中被收归为内部模块,API也从异步实现改为同步实现。

实现代码

NPM构建场景

如果项目通过npm安装openpgp,配合webpack/rollup/vite等构建工具使用,可以直接通过子路径导入内部EAX模块,示例代码如下:

import openpgp from 'openpgp';
// 导入EAX加密模式模块
import EAX from 'openpgp/crypto/mode/eax';
// 导入对称加密算法集合
import ciphers from 'openpgp/crypto/cipher';

// 替换为实际使用的加密算法名,如'aes128'/'aes256',传入密钥初始化算法实例
const cipherInstance = new ciphers[/* 对应算法名 */](key);
const eax = new EAX(cipherInstance);
// 解密为同步方法,不需要加await
const result = eax.decrypt(encryptedData, nonce, header);

浏览器UMD直接引入场景

如果是通过script标签直接引入openpgp的UMD生产包,包内不会挂载EAX相关内部模块,可选择两种方案处理:

  • 调整构建配置,将openpgp源码中的EAX模块单独打包引入
  • 直接把EAX模式的实现代码抽离到本地项目维护。EAX实现依赖极少、代码量小,抽离后不存在兼容性问题,也能避免后续openpgp版本升级改动内部路径导致代码失效。

注意点

  • 5.x版本EAX的初始化、加解密全流程都是同步方法,不要加await调用
  • 所有入参需为Uint8Array类型,和4.x版本参数类型要求兼容,如果传入的是Buffer类对象,提前转成Uint8Array即可
  • 直接导入内部子路径的写法不属于官方公开API,后续版本升级可能出现路径变动,生产环境长期使用更推荐抽离EAX实现到本地维护。

内容的提问来源于stack exchange,提问作者Raza Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:39:19