LINUX.ORG.RU
ФорумTalks

Мой скрипт шифрования паролей

 ,


1

1
#!/bin/bash

PASS=$1
LEN=$2

if [ -f key.bin ]
then
	true
else
	exit 1
fi

if [ "$LEN" != "" ] && [ "$LEN" -le "48" ]
then
        true
else
        exit 2
fi


KEY="$(cat key.bin|pv|xxd -ps -c 1)"

echo "$PASS $(echo $KEY|tr -d ' '|xxd -r -p|tr -dc 'A-Za-z0-9')"|sha256sum|awk '{print $1}'|md5sum \
|awk '{print $1}'|sha256sum|awk '{print $1}'|sha512sum|awk '{print $1}'|rev \
|sed -e 's/a/z/' -e 's/b/y/' -e 's/c/x/' -e 's/e/w/' -e 's/f/v/' \
|tr '[:lower:]' '[:upper:]'|rev|sed -e 's/1/a/' -e 's/2/b/' -e 's/3/c/' -e 's/4/f/'|tr 'A' 'a'|tr 'Z' 'z'|head -c $LEN
printf "l${LEN}ne"
printf '\n'


Запускать так:

./obpass <вашпароль> <размер зашифрованного пароля>
Не забудьте предварительно сгенирировать ключевой файл, которым будут шифроваться пароли

Перемещено jollheef из development

★★★★★

Последнее исправление: ne-vlezay (всего исправлений: 4)

Ответ на: комментарий от peregrine

Как только у Вас язык повернулся такое сказать...

mandala ★★★★★
()

Надо еще цикл с рандомным количеством итераций добавить, а то всё еще несекурно.

Radjah ★★★★★
()

man хеширование

anonymous
()

А идея то в чем? Ничего не понял. Зачем эти манипуляции с хэшом? И как потом расшифровать пароль?

hotpil ★★★★
()
Ответ на: комментарий от ne-vlezay

В смысле ты изобрел pwgen или «на сайте» он как-то будет проверяться? Во втором случае я так понимаю ключ у тебя рядом должен лежать? В чем секьюрность тогда?

micronekodesu ★★★
()
Ответ на: комментарий от hotpil

Пароли не должны расшифровывается. Поэтому применяют алгоритмы одностороннего шифрования. Обычно это MD5, но автор захотел более надёжный SHA-512. Для проверки правильности пароля зашифрованный пароль сравнивается с ранее сохранённым зашифрованном паролем. При этом правда есть опасность подбора паролей- если злоумышленник будет вводить обычные простые пароли. Во избежание этого можно например шифровать не сам пароль, а набор имя:пароль. Есть и более хитрые способы с использованием сервера аутентификации.

Partisan ★★★★
()
Ответ на: комментарий от Partisan

алгоритмы одностороннего шифрования

Звучит как «алгоритмы одностороннего сжатия».

i-rinat ★★★★★
()
Ответ на: комментарий от Partisan

Обычно это MD5

Обычно это md5(md5($pass).$salt)

При этом правда есть опасность подбора паролей- если злоумышленник будет вводить обычные простые пароли.

Это называется коллизией хеш-функции.

Deleted
()
Последнее исправление: Rainor (всего исправлений: 1)

Не очень понятно зачем этот огород?

Если вы хотите делать «уникальные» пароли для своих учетных записей на разных сайтах (лорчик, винфак, whatever_else), то логичнее и удобнее для себя брать что-то типа md5(md5($pass).$sitedomain). Это позволит использовать свой любимый пароль (хоть passw0rd) на всех сайтах без угрозы компрометации учёток на других сайтах.

Deleted
()
Ответ на: комментарий от Partisan

одностороннего шифрования. Обычно это MD5

Я бы посоветовал сделать что-то с собой, но к сожалению я модератор, да и законами РФ запрещено.

Поэтому я просто предложу лишний раз почитать мат. часть.

Deleted
()
Ответ на: комментарий от Deleted

к сожалению я модератор

Это поправимо. Было бы желание.

ashot ★★★★
()

AES/DES не?

хеширование != шифрование.

Serg_HIS
()

Теперь напиши сайтег, который эту вундервавлю будет использовать.

KennyMinigun ★★★★★
()

Это просто ужасно. Не надо так.

Попробуй вот это:

pip3 install scrypt
python3 -c "import scrypt; print(scrypt.hash('my-password', 'my-unique-personal-salt').hex())"

michwill ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.