.NET 8中SHA3在Windows 11平台不支持的解决方法咨询
.NET 8 SHA3算法在Windows 11 x64平台抛出
PlatformNotSupportedException的解决方法(无需外部库) 问题描述
在Windows 11 x64(AMD Ryzen 3 5300U)平台上创建.NET 8新项目,试用SHA3/Shake算法时,调用任何相关类都会抛出PlatformNotSupportedException,提示“该操作在此平台上不受支持”。希望在不借助外部库的前提下解决此问题。
代码示例
using System.Security.Cryptography; var hash = SHA3_256.HashData("Example data to hash"u8);
异常信息
Unhandled exception. System.PlatformNotSupportedException: Operation is not supported on this platform. at System.Security.Cryptography.SHA3_256.TryHashData(ReadOnlySpan`1 source, Span`1 destination, Int32& bytesWritten) at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source, Span`1 destination) at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source) at Program.<Main>$(String[] args) in C:\Users\admin\source\repos\Net8Test\Net8Test\Program.cs:line 3
解决方法
原因分析
.NET 8的SHA3算法默认依赖CPU的SHA-NI扩展指令集,而AMD Ryzen 3 5300U属于Zen 2架构,该架构不支持SHA-NI指令集,这是抛出异常的核心原因。
无需外部库的解决方案
通过启用.NET的纯软件实现 fallback 即可解决,具体步骤:
- 打开项目的
.csproj文件,添加以下配置项,强制使用软件实现的SHA3算法:
<PropertyGroup> <UseSha3SoftwareFallBack>true</UseSha3SoftwareFallBack> </PropertyGroup>
- 保存配置后重新编译运行项目,此时SHA3/Shake算法会自动切换到纯软件实现,不再依赖硬件指令集,可正常执行哈希计算。
验证说明
添加该配置后无需修改原有代码,原SHA3_256.HashData等调用会直接使用软件实现完成计算,不会再抛出平台不支持的异常。
内容的提问来源于stack exchange,提问作者Bird2
相关产品推荐
相关产品推荐

