【问题标题】:Unable to PGP Encrypt/Decrypt Excel file using OpenPGP.js无法使用 OpenPGP.js 对 Excel 文件进行 PGP 加密/解密
【发布时间】:2021-02-20 11:37:22
【问题描述】:

尝试像对 csv/txt 文件一样加密和解密 excel 文件,但我做不到。

加密

var rawMessage= fs.readFileSync(path)
await openpgp.initWorker({ path: 'openpgp.worker.js' }); // set the relative web worker path
const publicKeyArmored = readFile(publicKeyPath);
const { data: encrypted } = await openpgp.encrypt({
    message: openpgp.message.fromBinary(new Uint8Array(rawMessage)),  // input as Message object
    publicKeys: (await openpgp.key.readArmored(publicKeyArmored)).keys, // for encryption
    armor: true,
    compression: openpgp.enums.compression.zip
});

解密

var rawMessage= fs.readFileSync(path)
const privateKeyArmored = readFile(privateKeyPath);
const { keys: [privateKey] } = await openpgp.key.readArmored(privateKeyArmored);
await privateKey.decrypt(passphrase);
const { data: decrypted } = await openpgp.decrypt({
  message: await openpgp.message.readArmored(encryptedData), //               // parse armored message
      privateKeys: [privateKey]                                           // for decryption
  });

寻求快速解决方案

【问题讨论】:

    标签: openpgp openpgp.js


    【解决方案1】:

    由于文件是excel,而且数据是压缩过的,所以文本输出就无济于事了。默认情况下,Openpgp 将输出作为文本返回。解决方案是将解密后的输出作为二进制文件,然后保存在文件中。

    const { data: decrypted } = await openpgp.decrypt({
      message: await openpgp.message.readArmored(encryptedData), // parse armored message
      privateKeys: [privateKey],   // for decryption
      format: 'binary'
    });
    

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      相关资源
      最近更新 更多