Python RSA OAEP加密出现'NoneType'无属性'n'报错该如何解决?
报错根因
这个AttributeError: 'NoneType' object has no attribute 'n'错误,本质是你创建的PKCS1_OAEP加密器实例ci内部持有的RSA密钥属性_key为空,加密时读取密钥模数n失败。
必现排查项
- 检查加密器初始化逻辑:确认你调用
PKCS1_OAEP.new()传入RsaKey对象的时机,是否早于密钥生成/加载/从服务端获取的完成时机。你提到仅首次执行加密时报错,大概率是首次触发加密时,密钥还没完成初始化,你就用空值/未完成赋值的变量创建了加密器实例。 - 排查密钥作用域与生命周期:如果你的RsaKey对象在局部作用域生成,加密器初始化时读取的变量还没完成赋值,或者密钥对象在加密执行前被误释放/覆盖为
None,都会触发该错误。你可以在enc函数内执行加密前,先打印ci._key的值做校验,确认加密器初始化时就没有正确传入密钥。 - 确认密钥类型正确性:
PKCS1_OAEP加密操作只能传入RSA公钥对象,若你误传入了私钥导出值、非RSA类型密钥,也可能导致加密器初始化失败,内部密钥属性为空。
内容的提问来源于stack exchange,提问作者Endleon
相关产品推荐
相关产品推荐

