Sha256、Sha384、Sha512 在 WIndows XP 中不工作?

Sha256,Sha384,Sha512 is not working in WIndows XP?

下面的代码在 windows 8.1 和 10 中运行良好,并在 windows xp sp3 它不工作并且 return 空值以及 sha1、sha384 中存在同样的问题,但 MD5 工作正常并获得 return 输出 但其他人不能, 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

阅读一些文档后,似乎 windows XP SP3 如果使用 sha256/384/512 加密进行加密,则无法获取证书。 (Link)

请注意 Windows XP 是 not longer supported by Microsoft, which means that developping for the platform might be dangerous

如果您-确实-想要继续开发。您可以尝试在 this 页面上找到的修补程序,其中涉及安装 2009 年发布的官方 Microsoft dll。

终于我得到了一些关于Difference between SHA1, SHA1CryptoServiceProvider, SHA1Managed and SHA1Cng classes in .NET的信息...

  1. SHA1:这是抽象的 class。 SHA1 的所有其他实现 (SHA1CryptoServiceProvider、SHA1Managed 和 SHA1Cng)实现了这个 摘要 class。要创建 concreate SHA1 class,请使用 SHA1.Create()。 默认情况下 SHA1.Create() returns SHA1CryptoServiceProvider,即 可配置的。配置默认 SHA1 实现: http://msdn.microsoft.com/en-us/library/693aff9y.aspx
  2. SHA1CryptoServiceProvider:这是非托管的包装器 加密API(CAPI)。这是联邦信息处理标准 (FIPS) 认证。
  3. SHA1Managed:这是使用托管的 SHA1 的完整实现 代码。这是完全托管的,但未经 FIPS 认证,可能是 慢一点。
  4. SHA1Cng:这是下一代非托管密码术的包装器 (压缩天然气)。这些是密​​码算法的较新实现 Microsoft Windows 2008/Windows Vista 或更新版本。这也是 FIPS 认证。