Ошибка компиляции Java MD5 - PullRequest
       6

Ошибка компиляции Java MD5

1 голос
/ 23 октября 2010

Я просто пытаюсь использовать библиотеку MD5 в Java, но я получил некоторые ошибки,

когда я пытаюсь его скомпилировать, я получаю эту ошибку:

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 Ответ

1 голос
/ 23 октября 2010

Поскольку вы используете WTK, возможно, у вас есть эта версия 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) для получения переносимых результатов.

...