Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Хостинг HostFood.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
-
Контактная информация:
Непрочитанное сообщение
liet » 2012-11-23 13:50:54
man base64 ?
xxx: Иногда лучше сказать: "Я не знаю", чем пытаться что-то донести до дурака.
liet
-
Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2012-11-23 18:59:04
Убей их всех! Бог потом рассортирует...
Alex Keda
-
GhOsT_MZ
- лейтенант
- Сообщения: 662
- Зарегистрирован: 2011-04-25 11:40:35
-
Контактная информация:
Непрочитанное сообщение
GhOsT_MZ » 2012-11-23 22:05:48
liet писал(а):man base64 ?
а с каких это пор base64 делает хеши? это двухсторонний алгоритм, у него по определению хеша нет на выходе.
GhOsT_MZ
-
Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2012-11-23 23:34:05
ну код же нарисован?
--
тока что смущает - там sha бинарный делается.
я не знаю, умеет ли консольная утилита такой делать.
не пришлось бы его чем-то конвертить - 16-ти ричный в бинарный...
Убей их всех! Бог потом рассортирует...
Alex Keda
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
kharkov_max » 2012-11-26 12:07:34
Порылся, поискал в инете - ни чего не могу найти ...
Можно конечно использовать уже то что есть на php, но только ради этого ставить php не хочется.
Не ужели нет вариантов для shell.
Если есть киньте пожалуйста примером или ссылкой ....
Таким механизмом шифруется пароль и потом добаляется в mysql базу ...
Пишу скрипт который его будет менять ...
Изменить механизм шифрования нельзя ...
kharkov_max
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-11-26 12:18:50
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
kharkov_max » 2012-11-26 12:40:43
kpp писал(а):В чем проблема?
Огромное человеческое СПАСИБО.
В принципе предполагал что все просто как в танке, но не знал где искать ....
Подскажите а base64 это не оно ?
Код: Выделить всё
whereis base64
base64: /usr/ports/converters/base64
А то sha1 срабатывает а на base64 ругается ...
kharkov_max
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-11-26 12:48:56
Оно.
base64 отрабатывает как и base64_encode, только последний символ отличается
По sha1 нужно выяснять что означает опция true.
Похоже вот так с ходу - результат будет отличаться.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-11-26 12:55:21
sha1 -s "password" - работает идентично sha1("password", false) в php
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
kharkov_max » 2012-11-26 12:59:52
kpp писал(а):Оно.
base64 отрабатывает как и base64_encode, только последний символ отличается
По sha1 нужно выяснять что означает опция true.
Похоже вот так с ходу - результат будет отличаться.
Попробовал ...
Код: Выделить всё
>>echo '12345' | sha1 | base64
MjY3MjI3NWZlMGM0NTZmYjY3MWU0ZjQxN2ZiMmY5ODkyYzc1NzNiYQo=
>>php ./password.php 1234
cRDtpNCeBiql5KOQsKVyrA0sAiA=
Результат в корне отличается ....
kharkov_max
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
kharkov_max » 2012-11-26 13:03:59
Код: Выделить всё
>>php ./password.php 12345
jLIjfQZ5yojbZGTqxg2pY0VROWQ=
>>sha1 -s '12345' | awk -F" " '{print $4}' | base64
OGNiMjIzN2QwNjc5Y2E4OGRiNjQ2NGVhYzYwZGE5NjM0NTUxMzk2NAo=
Тоже разный результат ...
kharkov_max
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
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
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
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 раз.
kharkov_max
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-11-26 13:11:55
Нужно сделать sha1 -qs "password" - на выходе строка 16-тиричная, нужно взять каждое 16-тиричное число и преобразовать в byte или char - это будет аналог sha1("password", true)
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
kharkov_max » 2012-11-26 13:19:08
kpp писал(а): нужно взять каждое 16-тиричное число и преобразовать в byte или char - это будет аналог sha1("password", true)
Ого ....
Не осилю ...
kharkov_max
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2012-11-26 13:56:43
можно например вот так вот:
Код: Выделить всё
echo -n "password" | openssl sha1 -binary | base64
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
kharkov_max » 2012-11-26 14:06:47
rayder писал(а):можно например вот так вот:
Код: Выделить всё
echo -n "password" | openssl sha1 -binary | base64
Супер ))))
То что нужно )))
Результаты идентичны ....
И Вам "Огромное человеческое спасибо" ....
kharkov_max
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
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 поля ....
kharkov_max
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2012-11-26 14:50:14
укажите полные пути к командам, а то мало ли
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-11-26 15:19:49
А это для тех, кто не ищет легких путей
:
Код: Выделить всё
#!/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/'
Параметр скрипта пароль, который нужно захешить.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2012-11-26 15:28:34
Месье знает толк в извращениях. (С)
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-11-26 15:46:06
kharkov_max писал(а):rayder писал(а):можно например вот так вот:
Код: Выделить всё
echo -n "password" | openssl sha1 -binary | base64
Результаты идентичны ....
Результаты на самом деле идентичны?
У меня отличаются последним символом...
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
kharkov_max
- капитан
- Сообщения: 1862
- Зарегистрирован: 2008-10-03 14:56:40
Непрочитанное сообщение
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=
kharkov_max