Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 2
Регистрация: 30.09.2012
Сообщений: 23
1

Sha1 хэш на java

29.09.2017, 22:57. Показов 2585. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Столкнулся с довольно странной проблемой.
Есть код на php
PHP/HTML
1
echo base64_encode(sha1("test", TRUE));
Cобственно задача - написать аналогичную функцию на java, но вот используя стандартные функции хэширования ничего не выходит. Собственно вопрос - как реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2017, 22:57
Ответы с готовыми решениями:

Хэш sha1 и md5
Посчитать хэш sha1 и md5 выбранный пользователем файл алгоритмом . Использовать стандартную...

Ошибка компиляции хэш-функции SHA1
Добрый день. Пытаюсь сделать задание: преобразование строки с использованием хеш-функции SHA1. На...

Ошибка в получении sha1 (неверный хэш)
В любом онлайн сервисе показывает: sha1: А у меня: hex :

Ввести в форму слово и получить его md5 и sha1 хэш.
Подскажите пожалуйста как ее использовать? <?php $str = 'слово'; if...

4
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
30.09.2017, 10:58 2
Цитата Сообщение от tolstyy Посмотреть сообщение
но вот используя стандартные функции хэширования ничего не выходит.
Что значит «ничего не выходит»? Как ты их используешь? В гугле полно примеров же.
0
0 / 0 / 2
Регистрация: 30.09.2012
Сообщений: 23
30.09.2017, 11:12  [ТС] 3
Цитата Сообщение от korvin_ Посмотреть сообщение
Что значит «ничего не выходит»? Как ты их используешь? В гугле полно примеров же.
В гугле полно примеров. У меня все получилось для вот такого случая base64_encode(sha1("test"));
А вот случай с TRUE не получается никак(
0
0 / 0 / 0
Регистрация: 23.10.2016
Сообщений: 6
30.09.2017, 13:19 4
Можно и так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class JavaApplication9 {
 
  private static final char[] CA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
 
  public static void main(String[] args) {
    String message = "123";
    System.out.println("Text:" + message + " Hash: " + encodePassword(message));
  }
 
  public static String encodePassword(String password) {
    try {
      MessageDigest messageDiegest = MessageDigest.getInstance("SHA-1");
      messageDiegest.update(password.getBytes("UTF-8"));
      return new String(encodeToChar(messageDiegest.digest(), false));
    } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
      throw new Error(e);
    }
  }
 
  public static char[] encodeToChar(byte[] sArr, boolean lineSep) {
    // Check special case
    int sLen = sArr != null ? sArr.length : 0;
    if (sLen == 0) {
      return new char[0];
    }
 
    int eLen = (sLen / 3) * 3; // Length of even 24-bits.
    int cCnt = ((sLen - 1) / 3 + 1) << 2; // Returned character count
    int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array
    char[] dArr = new char[dLen];
 
    // Encode even 24-bits
    for (int s = 0, d = 0, cc = 0; s < eLen;) {
      // Copy next three bytes into lower 24 bits of int, paying attension to sign.
      int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff);
 
      // Encode the int into four chars
      dArr[d++] = CA[(i >>> 18) & 0x3f];
      dArr[d++] = CA[(i >>> 12) & 0x3f];
      dArr[d++] = CA[(i >>> 6) & 0x3f];
      dArr[d++] = CA[i & 0x3f];
 
      // Add optional line separator
      if (lineSep && ++cc == 19 && d < dLen - 2) {
        dArr[d++] = '\r';
        dArr[d++] = '\n';
        cc = 0;
      }
    }
 
    // Pad and encode last bits if source isn't even 24 bits.
    int left = sLen - eLen; // 0 - 2.
    if (left > 0) {
      // Prepare the int
      int i = ((sArr[eLen] & 0xff) << 10) | (left == 2 ? ((sArr[sLen - 1] & 0xff) << 2) : 0);
 
      // Set last four chars
      dArr[dLen - 4] = CA[i >> 12];
      dArr[dLen - 3] = CA[(i >>> 6) & 0x3f];
      dArr[dLen - 2] = left == 2 ? CA[i & 0x3f] : '=';
      dArr[dLen - 1] = '=';
    }
    return dArr;
  }
}
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
30.09.2017, 19:03 5
Цитата Сообщение от tolstyy Посмотреть сообщение
А вот случай с TRUE не получается никак
Понятия не имею, что такое «случай с TRUE».
0
30.09.2017, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2017, 19:03
Помогаю со студенческими работами здесь

Проверка файла на MD5 и SHA1 и сравнение с готовым MD5 и SHA1
Есть файл text.txt на него md5:53734131cd0cf82dfbbe85e0459089e9 и...

Описать класс "хэш-таблица", используя unordered_set и заданную хэш-функцию
Здравствуйте. Есть класс объектов и ключ сравнения: #pragma once #include &lt;iostream&gt; #include...

Sha1(base64)
Доброго времени суток для проверки\записи пароля в бд нужно узнать хеш, в моем случае...

Видоизмененный Sha1
Добрый день . Недавно дизассемблировал прошивку одного устройства и наткнулся на алгоритм...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru