代码之家  ›  专栏  ›  技术社区  ›  deddihp

java md5编译错误

  •  1
  • deddihp  · 技术社区  · 15 年前

    当我试图编译它时,我得到了一个错误:

    digest(byte[],int,int) in java.security.MessageDigest cannot be applied to (byte[])
    

    我试图用wtk(j2me)编译它 怎么了?。谢谢

    这是密码

    import java.io.FileInputStream;
    import java.io.UnsupportedEncodingException;
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5 {
        public static String getMD5(String input) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] messageDigest = md.digest(input.getBytes());
                BigInteger number = new BigInteger(1, messageDigest);
                String hashtext = number.toString(16);
                // Now we need to zero pad it if you actually want the full 32 chars.
                while (hashtext.length() < 32) {
                    hashtext = "0" + hashtext;
                }
                return hashtext;
            }
            catch (NoSuchAlgorithmException e) {
                throw new RuntimeException(e);
            }
        }
    
        public static void main(String[] args) throws NoSuchAlgorithmException {
            System.out.println(getMD5("Javarmi.com"));
        }
    }
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   axtavt    15 年前

    既然你用了WTK,也许你已经 this version of MessageDigest ,它没有 digest(byte[])

    int MD_SIZE = 16;
    byte[] messageDigest = new byte[MD_SIZE];
    byte[] message = ...;
    md.update(message, 0, message.length);
    md.digest(messageDigest, 0, MD_SIZE);
    

    还请注意,您使用 String.getBytes() String.getBytes(String encoding) 为了得到可移植的结果。