以下是用MD5对输入密码进行加密的VB片段,我想用JAVA实现相同功能,请问如何实现。万分感谢!
    Private lbtVector() As Byte = {240, 3, 45, 29, 0, 76, 173, 59} 
    Private lscryptoKey As String = "key"     Public Function psDecrypt(ByVal sQueryString As String) As String         Dim buffer() As Byte 
        Dim loCryptoClass As New TripleDESCryptoServiceProvider 
        Dim loCryptoProvider As New MD5CryptoServiceProvider         Try 
            buffer = Convert.FromBase64String(sQueryString) 
            loCryptoClass.Key = loCryptoProvider.ComputeHash(ASCIIEncoding.ASCII.GetBytes(lscryptoKey)) 
            loCryptoClass.IV = lbtVector 
            Return Encoding.ASCII.GetString(loCryptoClass.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length())) 
        Catch ex As Exception 
            Throw ex 
        Finally 
            loCryptoClass.Clear() 
            loCryptoProvider.Clear() 
            loCryptoClass = Nothing 
            loCryptoProvider = Nothing 
        End Try     End Function 
    Public Function psEncrypt(ByVal sInputVal As String) As String         Dim loCryptoClass As New TripleDESCryptoServiceProvider 
        Dim loCryptoProvider As New MD5CryptoServiceProvider 
        Dim lbtBuffer() As Byte         Try 
            lbtBuffer = System.Text.Encoding.ASCII.GetBytes(sInputVal) 
            loCryptoClass.Key = loCryptoProvider.ComputeHash(ASCIIEncoding.ASCII.GetBytes(lscryptoKey)) 
            loCryptoClass.IV = lbtVector 
            sInputVal = Convert.ToBase64String(loCryptoClass.CreateEncryptor().TransformFinalBlock(lbtBuffer, 0, lbtBuffer.Length())) 
            psEncrypt = sInputVal 
        Catch ex As CryptographicException 
            Throw ex 
        Catch ex As FormatException 
            Throw ex 
        Catch ex As Exception 
            Throw ex 
        Finally 
            loCryptoClass.Clear() 
            loCryptoProvider.Clear() 
            loCryptoClass = Nothing 
            loCryptoProvider = Nothing 
        End Try 
    End Function

解决方案 »

  1.   

    JDK自己就带有 MD5 加密的嘛。
    java.security.MessageDigest 就可以达到要求,示例如下:import java.security.*....
    byte[] data = .....MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] result = md.digest(data);这里你需要处理的就是把你要加密的东西,比如字符串,先转换成 byte[],加密的结果也是 byte[],如果你需要字符串形式的,可以将其按字节转换成十六进制。
      

  2.   

    yongg用过SHA—1的,没用过md5的。但差不多,你看下面的程序,你自己改吧,程序中我做了说明。public String comuteDigest(String name)
    {
     MessageDigest messageDigest;
     byte[] name_b =name.getBytes();
     String newName="";
     try
             {
        messageDigest= MessageDigest.getInstance("SHA-1");//你把这个SHA-1换为md5就可以了。
        messageDigest.reset();//重置摘要
        messageDigest.update(name_b);//更新摘要
        byte[] hash=messageDigest.digest();//计算摘要
    for(int i=0;i<hash.length;i++)
    {
    int v = hash[i] & 0xFF;//转换为十六进制
    if (v < 16) newName += "0";
        newName += Integer.toString(v, 16).toUpperCase();
        }
     }
     catch(NoSuchAlgorithmException e)
     {
         System.out.println(e);
             }  return newName;
    }
      

  3.   

    my blog
    http://blog.donews.com/qiyadeng/archive/2005/05/28/402898.aspx