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

Django中使用AES加密MP3音频触发AssertionError问题求助

问题排查与解决

错误核心原因

触发AssertionError是因为传入的密钥长度不满足代码要求:

  • 代码中key_bytes = 16,明确要求密钥必须是16字节(对应AES-128算法),但你调用时传的字符串"testing"仅为7字节,不满足断言len(key) == key_bytes的校验条件。
  • 另外函数注释写的是"32-byte key",但代码实际用的是16字节,注释与代码逻辑不一致,也容易造成混淆。

针对性解决方案

方案1:适配AES-128算法

直接传入16字节长度的密钥即可,示例:

# 调用时使用16字节的密钥(示例字符串)
enkripsi = encrypt("my16bytekeyhere!", testaudio)

方案2:切换为AES-256算法

若想使用AES-256,需修改代码中的密钥长度要求,并传入32字节的密钥:

# 修改加密函数开头的key_bytes值
key_bytes = 32

# 调用时传入32字节的密钥(示例字符串)
enkripsi = encrypt("my32bytekeyhere1234567890abcdef", testaudio)

生产环境注意事项

  • 不要用随意的短字符串当密钥,建议用密码学安全的随机生成器生成密钥:
import secrets
# 生成AES-128的随机密钥
key_128 = secrets.token_bytes(16)
# 生成AES-256的随机密钥
key_256 = secrets.token_bytes(32)
  • 用字符串作为密钥时,要注意编码后的字节长度(比如UTF-8下汉字占3字节),避免因字符编码导致长度不符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:39:16