以下代码在Windows 8.1和10中运行良好并在中进行了测试 windows xp sp3它不工作并返回null值 同样的问题在sha1,sha384但MD5工作正常并获得返回输出 但其他人不能, windows xp sp3是否支持sha校验和功能 或需要任何特殊代码(对不起英语不好)
Public Function GetSha512Hash()
Dim _flexe$ = ""
Dim _result$ = ""
Try
_flexe$ = IO.Path.Combine(Application.ExecutablePath)
Using _sha512 As New System.Security.Cryptography.SHA512CryptoServiceProvider
Using stream = File.OpenRead(_flexe$)
Dim _hash = _sha512.ComputeHash(stream)
_result$ = BitConverter.ToString(_hash).Replace("-", String.Empty)
Trace.WriteLine(String.Format("{0}", _result$))
Return _result$
End Using
End Using
Catch ex As Exception
Trace.WriteLine(Err.Description)
Me.PEx = ex
Return _result$
End Try
End Function
'SHa384
Public Function GetSha384Hash()
Dim _flexe$ = ""
Dim _result$ = ""
Try
_flexe$ = IO.Path.Combine(Application.ExecutablePath)
Using _sha512 As New System.Security.Cryptography.SHA384CryptoServiceProvider
Using stream = File.OpenRead(_flexe$)
Dim _hash = _sha512.ComputeHash(stream)
_result$ = BitConverter.ToString(_hash).Replace("-", String.Empty)
Trace.WriteLine(String.Format("{0}", _result$))
Return _result$
End Using
End Using
Catch ex As Exception
Trace.WriteLine(Err.Description)
Me.PEx = ex
Return _result$
End Try
End Function
答案 0 :(得分:1)
阅读一些文档后,如果使用sha256 / 384/512加密加密,Windows XP SP3似乎无法获取证书。 (Link)
请注意,Microsoft支持Windows not更长时间,这意味着该平台的开发可能是dangerous。
如果你想继续开发。您可以尝试在this页面上找到的修补程序,其中涉及安装2009年发布的官方Microsoft dll。
答案 1 :(得分:0)
最后我得到了一些关于Difference between SHA1, SHA1CryptoServiceProvider, SHA1Managed and SHA1Cng classes in .NET ...
的信息