Sha256,Sha384,Sha512在WIndows XP中不起作用?

时间:2017-09-01 11:37:54

标签: vb.net sha

以下代码在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

2 个答案:

答案 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 ...

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