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

Sha1 хэш на java

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

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

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

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

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

4
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
30.09.2017, 10:58
Цитата Сообщение от tolstyy Посмотреть сообщение
но вот используя стандартные функции хэширования ничего не выходит.
Что значит «ничего не выходит»? Как ты их используешь? В гугле полно примеров же.
0
 Аватар для tolstyy
0 / 0 / 2
Регистрация: 30.09.2012
Сообщений: 23
30.09.2017, 11:12  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Что значит «ничего не выходит»? Как ты их используешь? В гугле полно примеров же.
В гугле полно примеров. У меня все получилось для вот такого случая base64_encode(sha1("test"));
А вот случай с TRUE не получается никак(
0
0 / 0 / 0
Регистрация: 23.10.2016
Сообщений: 6
30.09.2017, 13:19
Можно и так:
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
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
30.09.2017, 19:03
Цитата Сообщение от tolstyy Посмотреть сообщение
А вот случай с TRUE не получается никак
Понятия не имею, что такое «случай с TRUE».
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2017, 19:03
Помогаю со студенческими работами здесь

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

Проверка файла на MD5 и SHA1 и сравнение с готовым MD5 и SHA1
Есть файл text.txt на него md5:53734131cd0cf82dfbbe85e0459089e9 и sha1:8f38ce7cb44c0b78f9cb4de6ddedba2107525386 Код: @echo off ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru