Как взять хеш пароля (замена php)

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-23 13:41:42

Добрый день.

Подскажите пожалуйста shell замену:

Код: Выделить всё

#! /bin/php
<?php
print(base64_encode(sha1($argv[1], true)));
>

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
liet
мл. сержант
Сообщения: 78
Зарегистрирован: 2012-01-04 13:47:43
Откуда: UA, Kiev
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение liet » 2012-11-23 13:50:54

man base64 ?
xxx: Иногда лучше сказать: "Я не знаю", чем пытаться что-то донести до дурака.


Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение Alex Keda » 2012-11-23 18:59:04

тогда уж и
http://man.freebsd.org/sha/
Убей их всех! Бог потом рассортирует...

GhOsT_MZ
лейтенант
Сообщения: 662
Зарегистрирован: 2011-04-25 11:40:35
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение GhOsT_MZ » 2012-11-23 22:05:48

liet писал(а):man base64 ?
а с каких это пор base64 делает хеши? это двухсторонний алгоритм, у него по определению хеша нет на выходе.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение Alex Keda » 2012-11-23 23:34:05

ну код же нарисован?
--
тока что смущает - там sha бинарный делается.
я не знаю, умеет ли консольная утилита такой делать.
не пришлось бы его чем-то конвертить - 16-ти ричный в бинарный...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 12:07:34

Порылся, поискал в инете - ни чего не могу найти ...

Можно конечно использовать уже то что есть на php, но только ради этого ставить php не хочется.
Не ужели нет вариантов для shell.

Если есть киньте пожалуйста примером или ссылкой ....

Таким механизмом шифруется пароль и потом добаляется в mysql базу ...
Пишу скрипт который его будет менять ...
Изменить механизм шифрования нельзя ...

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kpp » 2012-11-26 12:18:50

В чем проблема?

Код: Выделить всё

echo "password" | sha1 | base64
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 12:40:43

kpp писал(а):В чем проблема?

Код: Выделить всё

echo "password" | sha1 | base64
Огромное человеческое СПАСИБО.
В принципе предполагал что все просто как в танке, но не знал где искать ....

Подскажите а base64 это не оно ?

Код: Выделить всё

whereis base64
base64: /usr/ports/converters/base64
А то sha1 срабатывает а на base64 ругается ...

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kpp » 2012-11-26 12:48:56

Оно.
base64 отрабатывает как и base64_encode, только последний символ отличается :shock:
По sha1 нужно выяснять что означает опция true.
Похоже вот так с ходу - результат будет отличаться.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kpp » 2012-11-26 12:55:21

sha1 -s "password" - работает идентично sha1("password", false) в php
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 12:59:52

kpp писал(а):Оно.
base64 отрабатывает как и base64_encode, только последний символ отличается :shock:
По sha1 нужно выяснять что означает опция true.
Похоже вот так с ходу - результат будет отличаться.
Попробовал ...

Код: Выделить всё

>>echo '12345' | sha1 | base64
MjY3MjI3NWZlMGM0NTZmYjY3MWU0ZjQxN2ZiMmY5ODkyYzc1NzNiYQo=
>>php ./password.php 1234
cRDtpNCeBiql5KOQsKVyrA0sAiA=
Результат в корне отличается ....

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 13:03:59

Код: Выделить всё

>>php ./password.php 12345
jLIjfQZ5yojbZGTqxg2pY0VROWQ=

>>sha1 -s '12345' | awk -F" " '{print $4}' | base64
OGNiMjIzN2QwNjc5Y2E4OGRiNjQ2NGVhYzYwZGE5NjM0NTUxMzk2NAo=
Тоже разный результат ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 13:07:31

Код: Выделить всё

>>php ./password.php 12345
OGNiMjIzN2QwNjc5Y2E4OGRiNjQ2NGVhYzYwZGE5NjM0NTUxMzk2NA==

>>sha1 -s '12345' | awk -F" " '{print $4}' | base64
OGNiMjIzN2QwNjc5Y2E4OGRiNjQ2NGVhYzYwZGE5NjM0NTUxMzk2NAo=
Что то похоже, действительно 2 последних символа отличаются ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 13:11:00

(PHP 4 >= 4.3.0, PHP 5)
sha1 -- Calculate the sha1 hash of a string
Description
string sha1 ( string str [, bool raw_output] )

Calculates the sha1 hash of str using the US Secure Hash Algorithm 1, and returns that hash. The hash is a 40-character hexadecimal number. If the optional raw_output is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20.

Note: The optional raw_output parameter was added in PHP 5.0.0 and defaults to FALSE
Т.е. true обрезает либо формирует ключ в 20 символов .... что похоже.

Теперь как эт о реализовать в base64...
Последний раз редактировалось kharkov_max 2012-11-26 13:14:05, всего редактировалось 1 раз.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kpp » 2012-11-26 13:11:55

Нужно сделать sha1 -qs "password" - на выходе строка 16-тиричная, нужно взять каждое 16-тиричное число и преобразовать в byte или char - это будет аналог sha1("password", true)
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 13:19:08

kpp писал(а): нужно взять каждое 16-тиричное число и преобразовать в byte или char - это будет аналог sha1("password", true)
Ого ....
Не осилю ...

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение rayder » 2012-11-26 13:56:43

можно например вот так вот:

Код: Выделить всё

echo -n "password" | openssl sha1 -binary | base64
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 14:06:47

rayder писал(а):можно например вот так вот:

Код: Выделить всё

echo -n "password" | openssl sha1 -binary | base64
Супер ))))
То что нужно )))

Результаты идентичны ....
И Вам "Огромное человеческое спасибо" ....

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 14:29:05

Что то нечто такого получается.

Код: Выделить всё

randompass=`openssl rand -base64 5`
hashpassword=`echo -n $randompass | openssl sha1 -binary | base64`
echo $randompass
echo $hashpassword
Ну и конект к базе и update поля ....

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение rayder » 2012-11-26 14:50:14

укажите полные пути к командам, а то мало ли
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kpp » 2012-11-26 15:19:49

А это для тех, кто не ищет легких путей :roll: :

Код: Выделить всё

#!/bin/sh
  mass="`sha1 -qs ${1}`"
  res=
  b2=0
  for b1 in `jot 20 1 40 2`
  do
     b2=`exp b2+2`
     hh="0x""`echo ${mass} | cut -c${b1}-${b2}`"
     res=${res}"`echo ${hh} | awk '{printf "%c", $1}'`"
  done
  echo $res | base64 | sed 's/=$/K/'
Параметр скрипта пароль, который нужно захешить.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение rayder » 2012-11-26 15:28:34

:)
Месье знает толк в извращениях. (С)
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kpp » 2012-11-26 15:46:06

kharkov_max писал(а):
rayder писал(а):можно например вот так вот:

Код: Выделить всё

echo -n "password" | openssl sha1 -binary | base64
Результаты идентичны ....
Результаты на самом деле идентичны?
У меня отличаются последним символом...
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1853
Зарегистрирован: 2008-10-03 14:56:40

Re: Как взять хеш пароля (замена php)

Непрочитанное сообщение kharkov_max » 2012-11-26 15:50:23

kpp писал(а):
kharkov_max писал(а):
rayder писал(а):можно например вот так вот:

Код: Выделить всё

echo -n "password" | openssl sha1 -binary | base64
Результаты идентичны ....
Результаты на самом деле идентичны?
У меня отличаются последним символом...
Для сравнения:

Код: Выделить всё

>> php ./password.php qwerty
sbN3OgXA7QF2eHpPFXT/AHX3Uh4=
>>echo -n "qwerty" | openssl sha1 -binary | base64
sbN3OgXA7QF2eHpPFXT/AHX3Uh4=