Sha256,Sha384,Sha512不在WIndows XP中工作?
问题描述:
这下面的代码是Windows 8.1和10个能正常工作和测试 的Windows XP SP3它不工作,并返回空值和SHA1,SHA384也 同样的问题,但是MD5是工作的罚款,并得到返回的输出 但其他人不能, 做的Windows XP SP3的支持SHA校验功能 或需要任何特殊代码(对不起,英文不好)Sha256,Sha384,Sha512不在WIndows XP中工作?
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
答
公布最终我得到了一些Difference between SHA1, SHA1CryptoServiceProvider, SHA1Managed and SHA1Cng classes in .NET信息...
- SHA1:这是抽象类。 SHA1 (SHA1CryptoServiceProvider,SHA1Managed和SHA1Cng)的所有其他实现都实现此 抽象类。要创建混凝土SHA1类,请使用SHA1.Create()。 默认情况下,SHA1.Create()返回SHA1CryptoServiceProvider,它是 可配置的。配置默认的SHA1实现: http://msdn.microsoft.com/en-us/library/693aff9y.aspx
- SHA1CryptoServiceProvider:这是非托管的包装器 CryptoAPI(CAPI)。这是联邦信息处理标准 (FIPS)认证。
- SHA1Managed:这是使用托管的 代码完成SHA1的实现。这是完全管理的,但没有通过FIPS认证,可能会比较慢,因此可能是 。
- SHA1Cng:这是用于非托管加密下一代密码术的封装器(CNG) 。这些是由 Microsoft与Windows 2008/Windows Vista或更新版本的更新的加密算法的实施。这也是 FIPS认证。
Cryptography名称空间中的名称中包含“CryptoServiceProvider”的类取决于CAPI(操作系统提供的可安装组件)。所以没有安装它是第一个基本的故障模式。 XP还可以追溯到美国*对加密软件实施出口限制的时代,只让美国居民获得更高级的密码。 SO用户应该完成他们的档案以获得有效的帮助。考虑使用纯管理提供程序,如SHA512Managed。 –
谢谢先生,所以我可以使用'如果Environment.OSVersion.Version.Major DVELPR
很难猜测,你还没有解释为什么你更喜欢CSP,为什么它突然没问题,不要在旧机器上使用它。这不是随机选择,有些用户要求使用经过认证的算法。与您的用户交谈。不要忘记提到CAPI安装要求。 –