Конвертировать ComputeHash, используя алгоритм SHA1 в C #, в Java - PullRequest
0 голосов
/ 29 июня 2018

У меня есть функция для шифрования строки с помощью алгоритма SHA1 в C #. И теперь я хотел бы преобразовать именно это в язык Java. Я пытался, но я не получаю такой же вывод для C # и Java.

Кто-то, пожалуйста, помогите мне преобразовать его. Я очень благодарен за это. Спасибо.

Вот код C #:

public static string ComputeHash(string inString) {
    SHA1 sh = SHA1.Create();
    byte[] data = UTF8Encoding.UTF8.GetBytes(inString);
    byte[] result = sh.ComputeHash(data);
    return ToHexString(result);
}

public static string ToHexString(byte[] data) {
    string s = "";
    for (int i = 0, n = data.Length; i < n; i++) {
        s += String.Format("{0:X2}", data[i]);
    }
    return s;
}

1 Ответ

0 голосов
/ 02 июля 2018

Я изменил код и получил такой же вывод для C # и Java. Вот мой код Java:

public static String ComputeHash(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{

    MessageDigest md = MessageDigest.getInstance("SHA-1");
    md.reset();
    md.update(password.getBytes("UTF-8"));
    return toHexString(md.digest());

}

private static String toHexString(byte[] data){
    Formatter formatter = new Formatter();
    for(byte b : data){
        formatter.format("%02x", b);
    }
    String result = formatter.toString();
    formatter.close();
    return result;
}

С тем же строковым вводом: "abc123", я получил тот же результат: 6367C48DD193D56EA7B0BAAD25B1945положения29F5EE

Спасибо, М. Шена, я получил свое решение в вашем комментарии. Большое спасибо!

...