byte[] digestBuf= md.digest();这一句里的md.digest()的类型是什么啊?
该为byte[] digestBuf= (byte)md.digest();试试

解决方案 »

  1.   

    使用这个:package funcreal.string;import java.security.*;/**
     * <p>Title: MD5加密算法</p>
     * <p>Description: 使用MD5算法生成字符串的密文,密文不可逆</p>
     * <p>Copyright: Func Real Copyright (c) 2004</p>
     * <p>Company: 河北省标准化研究院</p>
     * @author not attributable
     * @version 1.0
     */public class MD5 {
        public static void main(String[] args) {        System.out.println(getMD5ofStr("hello"));
        }    /**
         * 把给定字符串进行加密
         * @param str String 需要加密的字符串
         * @return String 加密后的字符串
         */
        public static String getMD5ofStr(String str) {
            String MD5ofStr = null;        try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.update(str.getBytes());            MD5ofStr = byte2hex(md.digest());        } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }        return MD5ofStr;    }    /**
         * 将字节串转化为字符串,每一个字节转化为两个16进制数,所以,长度为6的字节串将生成长度为12的字符串
         * @param b byte[] 字节串
         * @return String 转化后的字符串
         */
        private static String byte2hex(byte[] b) {
            String hs = "";
            String stmp = "";
            for (int n = 0; n < b.length; n++) {
                stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
                if (stmp.length() == 1) {
                    hs = hs + "0" + stmp;
                } else {
                    hs = hs + stmp;
                }        }
            return hs.toUpperCase();
        }
    }
      

  2.   

    很简单,digestBuf 定义成了局部变量,后面当然认不出来,把它定义到最前面。
    另外这句 public void main 是什么意思
      

  3.   

    so,byte[] digestBuf= md.digest();放到try前面.....
      

  4.   

    import java.security.*;public class Mymd5
    {   
       public static void main(String[] args)
    {
       String str="123456";    try{
     MessageDigest md = MessageDigest.getInstance("MD5");        byte[] bin1 = str.getBytes();        md.update(bin1); byte[] bin2 = md.digest();        final StringBuffer buffer = new StringBuffer();        for (int i = 0; i < bin2.length; ++i)     //2进制转换成16进制
    {
               final byte b = bin2[i];
               final int value = (b & 0x7F) + (b < 0 ? 128 : 0);
       buffer.append(value < 16 ? "0" : "");
               buffer.append(Integer.toHexString(value));
    }
       
            String g=buffer.toString();
       
            System.out.println(g);

           }catch(Exception e)
               { 
                 e.printStackTrace();
               }
    }
    }