当我尝试使用我的ASP.net页面比较数据库中的密码时,我收到此错误。
此实现不是Windows平台FIPS验证的加密算法的一部分。
代码如下所示:
Public Shared Function UserAuthentication(ByVal user As String, ByVal pass As String) As WebUserSession
Dim strSQL As String = ""
Dim strForEncryption As String = pass
Dim result As Byte()
Dim sHA1Managed As SHA1 = New SHA1Managed()
Dim encryptedString As New System.Text.StringBuilder()
result = sHA1Managed.ComputeHash(ASCIIEncoding.ASCII.GetBytes(pass))
For Each outputByte As Byte In result
'convert each byte to a Hexadecimal upper case string
encryptedString.Append(outputByte.ToString("x2").ToUpper())
Next
strSQL &= "SELECT email, name, id, permission_id, username FROM (user) INNER JOIN user_per ON user.id = user_per.user_id "
strSQL &= "WHERE(username = '" & user & "' And password = '" & encryptedString.ToString() & "')"
我们最近不得不更新/锁定我们的服务器以符合安全漏洞等。但这样做会导致我们在同一台服务器上托管的其中一个网站出现此错误。在所有这些安全设置之前,网站工作得很好。
奇怪的是,我能够在VS 2010中运行本地网站(调试模式),它确实很好。完全没有错误。
在我们添加所有这些安全设置进行投诉之前,是否会有人提供有关如何解决此问题以使网站重新运行的任何提示?我们根本无法禁用它,因为这会导致我们的其他网站不合规。
http://social.msdn.microsoft.com/Forums/en/clr/thread/7a62c936-b3cc-4493-a3cd-cc5fd18b6b2a
http://support.microsoft.com/kb/935434
http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html
感谢。
也尝试使用此代码
Dim p As String = Password.Text.ToString
Dim data(p) As Byte
Dim result() As Byte
Dim sha As New SHA1CryptoServiceProvider()
result = sha.ComputeHash(data)
错误是:
从字符串“S51998Dg5”到“整数”类型的转换无效。
该错误就行了: Dim data(p)As Byte
答案 0 :(得分:3)
根据this sha1managed不符合fips。它抛出InvalidOperationException,因为此类不符合FIPS算法。
您需要取消FIPS合规性或使用符合FIPS标准的实施。 sha1cryptoserviceprovider我认为是FIPS投诉。