2015-01-07 2 views
0

В настоящее время я использую метод кодирования для кодирования пароля здесь:Groovy не может расшифровать пароль

static encode = { String s -> 
     print(s) 
     MessageDigest md = MessageDigest.getInstance('SHA') 
     print(md) 
     md.update s.getBytes('UTF-8') 
     def result = Base64.encodeBase64 md.digest() 
     new String(result, "UTF-8"); 
    } 

Итак, есть ли какие-либо возможные способы его расшифровать? Я попытался decodeBase64() и получил результат:

[64, -67, 0, 21, 99, 8, 95, -61, 81, 101, 50, -98, -95, -1, 92, 94, -53, -37, -66, -17] 

Am I близко к успеху? Как преобразовать его в строку?

ответ

2

Нет SHA - односторонний хеш, что означает, что вы не можете получить исходные данные с учетом хэша. Односторонние хэши делают хранение паролей людей более безопасными, потому что, даже если кто-то получил копию хеша, они не могут легко изменить хэш и получить пароль.

Base64 - это механизм кодирования для кодирования двоичных данных в виде текста ASCII. Это не шифрование. Если вы дадите мне кодированную Base64 строку, любой может ее декодировать и получить исходное сообщение. Большой ключ к тому, что он не безопасен, не существует секретного ключа, который предоставляется Base64, что означает, что он не мешает любому его расшифровать.

Нельзя хранить пароли с использованием SHA. В наши дни слишком легко грубить, поэтому ваши пароли легко декодировать. MD5 и SHA не являются безопасными хешами. Вам нужно использовать bcrypt или другие настраиваемые алгоритмы.

+0

Благодарим вас за советы. Я попробую другой способ вместо расшифровки. –

Смежные вопросы