CA5350:请勿使用弱加密算法
属性 | 值 |
---|---|
规则 ID | CA5350 |
标题 | 请勿使用弱加密算法 |
类别 | 安全性 |
修复是中断修复还是非中断修复 | 非中断 |
在 .NET 8 中默认启用 | 否 |
注意
此警告上次更新于 2015 年 11 月。
原因
TripleDES 等加密算法和 SHA1 及 RIPEMD160 等哈希算法被视为弱加密算法。
这些加密算法不能与更现代的对应算法提供同样多的安全保证。 与更现代的哈希算法相比,加密哈希算法 SHA1 和 RIPEMD160 提供的冲突抗性较低。 与更现代的加密算法相比,加密算法 TripleDES 提供的安全位数更少。
规则说明
现今出于多种原因而使用弱加密算法和哈希函数,但不应将其用于保证其所保护数据的保密性。
该规则在代码中发现 3DES、SHA1 或 RIPEMD160 算法时将触发并向用户发送警告。
如何解决冲突
使用更强大的加密选项:
何时禁止显示警告
当数据所需的保护级别不需要安全保证时,请禁止显示此规则的警告。
抑制警告
如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none
。
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
有关详细信息,请参阅如何禁止显示代码分析警告。
伪代码示例
到本文撰写时为止,下面的伪代码示例说明了此规则检测到的模式。
SHA-1 哈希冲突
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
解决方案:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RIPEMD160 哈希冲突
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
解决方案:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
TripleDES 加密冲突
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
解决方案:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}