PDFium Delphi Component 文件

FPdfAesGcm 单元

单元: FPdfAesGcm
纯 Pascal 实现的 AES-GCM 认证加密,支持 AES-128 和 AES-256 密钥,输出密文以及一个 16 字节的认证标签

语法

TAesGcmTag = array[0..15] of Byte;
TGHashBlock = TAesBlock;

procedure Aes256GcmEncrypt(const Key: TAes256Key; const IV, Plain, AAD: TBytes;
  out Cipher: TBytes; out Tag: TAesGcmTag);
function Aes256GcmDecrypt(const Key: TAes256Key; const IV, Cipher, AAD: TBytes;
  const Tag: TAesGcmTag; out Plain: TBytes): Boolean;
procedure Aes128GcmEncrypt(const Key: TAes128Key; const IV, Plain, AAD: TBytes;
  out Cipher: TBytes; out Tag: TAesGcmTag);
function Aes128GcmDecrypt(const Key: TAes128Key; const IV, Cipher, AAD: TBytes;
  const Tag: TAesGcmTag; out Plain: TBytes): Boolean;

说明

FPdfAesGcm 在 FPdfAes 的分组原语之上实现了 Galois/Counter 模式的 AES。它输出密文和一个 16 字节的认证标签,并接受附加认证数据(AAD)——这些数据受标签保护但不被加密

当标签验证失败时解密函数返回 False,因此调用方可以拒绝被篡改的密文而无需抛出异常。该模式用于需要超出 PDF AES-256-CBC 安全处理器之外的认证加密的结构

函数

FunctionDescription
Aes256GcmEncrypt用 256 位密钥、IV 和 AAD 加密 Plain,返回密文和一个 16 字节的标签
Aes256GcmDecrypt用 256 位密钥、IV 和 AAD 解密 Cipher 并验证标签;标签不匹配时返回 False
Aes128GcmEncrypt用 128 位密钥、IV 和 AAD 加密 Plain,返回密文和一个 16 字节的标签
Aes128GcmDecrypt用 128 位密钥、IV 和 AAD 解密 Cipher 并验证标签;标签不匹配时返回 False

类型

TypeDescription
TAesGcmTag由 GCM 生成和验证的 16 字节认证标签
TGHashBlockGHASH 构建块使用的 TAesBlock 别名

备注

参见

FPdfAes