Страница 1 из 2

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

Добавлено: 2012-11-23 13:41:42
kharkov_max
Добрый день.

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

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

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

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

Добавлено: 2012-11-23 13:50:54
liet
man base64 ?

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

Добавлено: 2012-11-23 13:59:25
kharkov_max
Возможно ...

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

Добавлено: 2012-11-23 18:59:04
Alex Keda
тогда уж и
http://man.freebsd.org/sha/

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

Добавлено: 2012-11-23 22:05:48
GhOsT_MZ
liet писал(а):man base64 ?
а с каких это пор base64 делает хеши? это двухсторонний алгоритм, у него по определению хеша нет на выходе.

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

Добавлено: 2012-11-23 23:34:05
Alex Keda
ну код же нарисован?
--
тока что смущает - там sha бинарный делается.
я не знаю, умеет ли консольная утилита такой делать.
не пришлось бы его чем-то конвертить - 16-ти ричный в бинарный...

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

Добавлено: 2012-11-26 12:07:34
kharkov_max
Порылся, поискал в инете - ни чего не могу найти ...

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

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

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

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

Добавлено: 2012-11-26 12:18:50
kpp
В чем проблема?

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

echo "password" | sha1 | base64

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

Добавлено: 2012-11-26 12:40:43
kharkov_max
kpp писал(а):В чем проблема?

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

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

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

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

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

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

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

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

Добавлено: 2012-11-26 12:55:21
kpp
sha1 -s "password" - работает идентично sha1("password", false) в php

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

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

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

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

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

Добавлено: 2012-11-26 13:03:59
kharkov_max

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

>>php ./password.php 12345
jLIjfQZ5yojbZGTqxg2pY0VROWQ=

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

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

Добавлено: 2012-11-26 13:07:31
kharkov_max

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

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

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

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

Добавлено: 2012-11-26 13:11:00
kharkov_max
(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...

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

Добавлено: 2012-11-26 13:11:55
kpp
Нужно сделать sha1 -qs "password" - на выходе строка 16-тиричная, нужно взять каждое 16-тиричное число и преобразовать в byte или char - это будет аналог sha1("password", true)

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

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

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

Добавлено: 2012-11-26 13:56:43
rayder
можно например вот так вот:

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

echo -n "password" | openssl sha1 -binary | base64

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

Добавлено: 2012-11-26 14:06:47
kharkov_max
rayder писал(а):можно например вот так вот:

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

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

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

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

Добавлено: 2012-11-26 14:29:05
kharkov_max
Что то нечто такого получается.

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

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

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

Добавлено: 2012-11-26 14:50:14
rayder
укажите полные пути к командам, а то мало ли

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

Добавлено: 2012-11-26 15:19:49
kpp
А это для тех, кто не ищет легких путей :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/'
Параметр скрипта пароль, который нужно захешить.

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

Добавлено: 2012-11-26 15:28:34
rayder
:)
Месье знает толк в извращениях. (С)

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

Добавлено: 2012-11-26 15:46:06
kpp
kharkov_max писал(а):
rayder писал(а):можно например вот так вот:

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

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

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

Добавлено: 2012-11-26 15:50:23
kharkov_max
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=