SYSLIB0007:不支持加密算法的默认实现
.NET Framework 中的加密配置系统不允许适当的加密灵活性,且不存在于 .NET Core 和 .NET 5+ 中。 .NET 的后向兼容性要求也禁止框架更新某些加密 API 以跟上加密技术的发展。 因此从 .NET 5 开始,以下 API 标记为已过时。 使用这些 API 会在编译时生成警告 SYSLIB0007,并在运行时生成 PlatformNotSupportedException。
System.Security.Cryptography.AsymmetricAlgorithm.Create()
System.Security.Cryptography.HashAlgorithm.Create()
System.Security.Cryptography.HMAC.Create()
System.Security.Cryptography.KeyedHashAlgorithm.Create()
System.Security.Cryptography.SymmetricAlgorithm.Create()
解决方法
建议采取的操作是用对特定算法(例如 Aes.Create())的工厂方法的调用替换对现已过时的 API 的调用。 这样,便可以完全控制要实例化哪些算法。
如果需要保持与使用现已过时的 API 的 .NET Framework 应用生成的现有有效负载的兼容性,请使用下表中建议的替换项。 该表提供了从 .NET Framework 默认算法到其 .NET 5+ 等效项的映射。
.NET framework
.NET Core/.NET 5 及更高版本的兼容替换项
备注
AsymmetricAlgorithm.Create()
RSA.Create()
HashAlgorithm.Create()
SHA1.Create()
SHA-1 算法被认为已无效。 如果可能,请考虑使用更强大的算法。 请咨询安全顾问以获取进一步的指导。
HMAC.Create()
HMACSHA1()
对于大多数新式应用程序,不建议使用 HMACSHA1 算法。 如果可能,请考虑使用更强大的算法。 请咨询安全顾问以获取进一步的指导。
KeyedHashAlgorithm.Create()
HMACSHA1()
对于大多数新式应用程序,不建议使用 HMACSHA1 算法。 如果可能,请考虑使用更强大的算法。 请咨询安全顾问以获取进一步的指导。
SymmetricAlgorithm.Create()
Aes.Create()
禁止显示警告
建议尽可能使用可用的解决方法。 但是,如果无法更改代码,可以通过 #pragma 指令或 <NoWarn> 项目设置来禁止显示警告。 如果必须使用过时 API,并且 SYSLIB0XXX 诊断没有显示为错误,则可以在代码或项目文件中取消该警告。
若要禁止显示代码中的警告,请执行以下操作:
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
若要禁止显示项目文件中的警告,请执行以下操作:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<!-- NoWarn below suppresses SYSLIB0001 project-wide -->
<NoWarn>
相关文章
- 你的苹果手机过时了么?iOS 15今年推出,这些设备不被支持
- 10周年10亿用户,微信造就的“软件神话”,从一封邮件开始
- Django2:Web项目开发入门笔记(13)
- 小程序开发者的肺腑之言:中小商户为何做不起来小程序?
- Django2:Web项目开发入门笔记(2)
- 春节回家到底要不要测核酸隔离?教你怎样查清楚
- Django2:Web项目开发入门笔记(1)
- css中svg图片无法显示怎么办?
- 支付宝推疫情直通车:可一键办理15类疫情服务
- 微信bug后企业微信又崩溃了?腾讯致歉:已经修复
- 继阿里之后,企鹅又露出窃听马脚!上网建议使用无痕浏览
- css padding内边距的理解
- QQ偷偷读取浏览器记录是咋回事?官方已修正
- css Flex容器如何理解
- css中fraction如何使用
- css如何实现自定义的属性
- css自定义属性如何继承
- iOS 12.5.1 正式版发布,旧机型专用
- css中sticky属性是什么
- 系统中的大管家—SystemServer进程