大家好我正在尝试将Java代码迁移到VB,现在我需要复制DES加密,但我在这部分中遇到了问题。VB,DES和MD5
我承认我从大学以来就没有加密过。
这使用MD5加密密钥,并将其发送到DES加密函数,似乎我得到了错误的线索,密钥必须是8位密钥,我发送16长度密钥。
Dim MD5 As New MD5CryptoServiceProvider()
Dim dataHash() As Byte = MD5.ComputeHash(Encoding.UTF8.GetBytes(challenge + password))
Dim sb As New StringBuilder
Dim b As Byte
For Each b In dataHash
sb.Append(b.ToString("x2").ToLower())
Next
Dim md5Key As String = sb.ToString
''Dim md5Key As String = digestUtils.md5Hex(challenge + password)
Dim geoEncrypt As New GeoEncriptamiento
Dim challengeAnswer As String = geoEncrypt.EncryptFile(challenge, md5Key)
这是做加密
Function EncryptFile(ByVal esquema As String, ByVal llave As String) As String
Dim DES As New DESCryptoServiceProvider()
'Establecer la clave secreta para el algoritmo DES.
'Se necesita una clave de 64 bits y IV para este proveedor
DES.Key = UTF8Encoding.UTF8.GetBytes(llave)
DES.IV = UTF8Encoding.UTF8.GetBytes(llave)
Try
Dim inputByteArray() As Byte = Encoding.UTF8.GetBytes(esquema)
Dim ms As New MemoryStream
Dim cs As New CryptoStream(MS, DES.CreateEncryptor(DES.Key, DES.IV), CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
Return Convert.ToBase64String(ms.ToArray())
Catch ex As Exception
Return "Error"
End Try
End Function
代码的错误是,当我尝试了MD5解析到DES.Key
虽然我与你的主张一致,Java方法返回一个十六进制哈希 昏暗md5Key的String = digestUtils.md5Hex(挑战+密码) 这就是为什么我不能使用其他哈希方法,但感谢您的重播。 – Enrique 2010-10-07 21:33:44