异常消息:This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
异常信息: at System.Security.Cryptography.MD5CryptoServiceProvider..ctor()
引用 :
http://www.xiaozhou.net/let_your_dotnet_program_compatible_with_fips-2012-02-17.html
开始之前,先介绍一下术语:
FIPS,全称是Federal Information Processing Standard,中文名叫联邦信息处理标准,FIPS 是由两个政府主体开发的标准。一个是美国国家标准和在美国境内的技术。另一种是通信安全机构,在加拿大。FIPS 是建议或要求使用 (美国或加拿大) 的联邦政府操作 IT 系统中的标准。
FIPS 140-2,主要用来定义安全级别,整个FIPS 140-2分为四个安全级别,它主要定义了一些和安全相关的策略,包括指定哪些加密算法和可使用的哈希算法和加密密钥的生成和管理的方式。
故事从这里开始,最近在做公司项目的时候,遇到一个很怪异的问题。我们的一个模块在普通的操作系统上,能正常运行,但是在启用了FIPS策略的机器上,就挂了。刚开始,还以为是其他原因,后来终于真相大白,这个bug和FIPS的安全策略有关。后来才知道,这个bug和US gov定义的这个安全策略那是相当的有基情!
前面已经提到,FIPS中有对加密算法的严格要求,总的来说,有些算法是FIPS允许的,有些是不允许的。而我的一个模块,恰恰用到了一个不兼容FIPS的加密算法,刚刚撞在了枪口上。悲剧啊⋯⋯
不过还是要感谢google老师,在搜索了一上午后,终于找到了解决办法:
第一种,是在.NET的配置文件<configuration>节点内增加runtime节点,加入如下节点:
<runtime>
<enforcefipspolicy enabled="false"></enforcefipspolicy>
</runtime>
通过把enforceFIPSPolicy强行设置为false,从而避过FIPS的策略检查。
https://msdn.microsoft.com/en-us/library/hh202806(v=vs.110).aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类