C#敏感数据加解密代码使用的具体加密算法名称问询
算法说明
核心加密算法
该代码使用的核心对称加密算法为 AES-256(高级加密标准256位版本),对应你需要的标准命名就是AES-256。
完整实现细节
- 底层算法支撑:代码中调用的
RijndaelManaged是.NET框架对Rijndael加密算法的实现,而AES就是NIST对Rijndael算法的标准化版本,限定块大小为128位,和代码中16字节(128位)的IV参数完全匹配,32字节(256位)的密钥对应AES的256位密钥规格。 - 分组模式:未显式指定的情况下,
RijndaelManaged默认使用CBC(密码分组链接)模式。 - 填充规则:未显式指定的情况下,
RijndaelManaged默认使用PKCS7填充规则。 - 密钥派生:使用
PasswordDeriveBytes类实现密钥派生,属于PBKDF1(基于密码的密钥派生函数1)的微软扩展实现。
安全文档标注建议
该实现存在多项安全隐患,编写文档时建议明确标注:
- 盐值固定:直接将密钥长度转ASCII作为盐,无随机盐,无法抵御彩虹表攻击
- 密钥派生算法过时:PBKDF1安全强度不足,当前行业标准推荐使用PBKDF2、Argon2等现代密钥派生算法
- 敏感数据未安全擦除:finally块仅将变量置空,不会清除内存中留存的明文、密钥等敏感信息
- 解密失败直接返回空字符串,存在被Padding Oracle攻击的风险
内容的提问来源于stack exchange,提问作者Darshan Faldu
相关产品推荐
相关产品推荐

