2024-01-25

[C#] .NET8 - SHA3-256 操作遭遇的平台問題

最近在看 .NET 8 新功能,最近好像多了 SHA3_256 ,因為之前在弄區塊鏈的東西,其實都是使用套件

BouncyCastle  套件,但是現在 .NET 8 好像已經內建有支援,想說來測試一下,結果出現了

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 System.Security.Cryptography.SHA3_256.HashData(Byte[] source)



後來我找了一下問題,好像是我現在的 Win11 還沒有安全更新到某個版本 ,要到某個版本之後才可以使用

其實我也只是要做一個簡單的 hash ,所以我只能部屬到 我的 Raspberry Pi 4 測試看看果然可以

所以這邊大概簡單記錄一下 ,在 .NET 8 做 SHA3-256  的 code 



結果:


因為是做 hash  的關係,要看自己 hash 出來是不是對的 我用這兩個網站來做比對 

https://md5calc.com/hash/sha3-256/%E7%95%B6%E9%BA%BB%E8%A8%B1%E6%B8%AC%E8%A9%A6

https://emn178.github.io/online-tools/sha3_256.html


hash  之後看起來一樣 應該就是沒啥問題了,只是如果你有跨平台需求你可以暫時先用三方套件,之後客戶端普及了,在使用內建的