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

使用Python Scapy配置IPsec SA时AES-GCM加密出现密钥长度错误如何解决?

问题原因及解决方法

错误根因

你遇到的ValueError: Invalid key size (96) for AES报错,核心是两个配置问题:

  1. AES算法本身仅支持固定长度的密钥:128位(16字节)、192位(24字节)、256位(32字节),你当前传入的crypt_key长度为96位(12字节),不符合AES的基础要求。
  2. Scapy的IPsec实现中,AES-GCM作为带认证的加密(AEAD)算法,密钥需要包含基础AES密钥+4字节Salt,总长度对应为20字节(AES-128-GCM)、28字节(AES-192-GCM)、36字节(AES-256-GCM)。

正确配置步骤

  • 若使用AES-128-GCM:生成16字节的AES密钥+4字节随机salt,拼接后作为crypt_key传入
  • 若使用AES-256-GCM:生成32字节的AES密钥+4字节随机salt,拼接后作为crypt_key传入
  • auth_algo保持设为NULL即可,因为AES-GCM自带完整性校验能力

示例代码

# AES-128-GCM示例:16字节密钥 + 4字节salt,总长度20字节
crypt_key = b'aaaaaaaabbbbbbbb' + b'1234'
sa = SecurityAssociation(ESP,
                        spi=10,
                        crypt_algo='AES-GCM',
                        crypt_key=crypt_key,
                        auth_algo='NULL',
                        auth_key=b'NULL',
                        tunnel_header=ip_tunnel)
# 调用加密方法即可正常运行
e = sa.encrypt(plain_txt)

内容的提问来源于stack exchange,提问作者Premkumar S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:09:03