Ruby 'Digest' не создает правильные хэши

Я пытаюсь создать систему входа в систему, хотя вместо ожидаемого получается очень странный результат. Вместо того, чтобы создать правильный хеш, он извергает случайный беспорядок Unicode. Хотя в моем примере кода используется SHA256, все остальные хэши, которые я могу создать, также делают это.

    puts "Hello, welcome to CORIS. Please set up an account."
    print "Username | "
    user = gets.chomp
    print "\nPass | "
    pass = gets.chomp
    userFile = File.open("user.keys", 'a+')
    passFile = File.open("pass.keys", 'a+')
    userFile.write(user)
    passer = Digest::SHA256.digest "#{pass}"
    puts passer
    sleep(50)

Выход:

Loading CORIS.
Hello, welcome to CORIS. Please set up an account.
Username | zero

Pass | TheCorruption
F��
�ib�LoIe[�jN��u�b���#r�K��

Digest :: MD5.digest Вывод:

Loading CORIS.
Hello, welcome to CORIS. Please set up an account.
Username | zero

Pass | TheCorruption
�/�7dw{�:�A�����

Я переустановил драгоценный камень, есть идеи, что может быть причиной этого?

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Методы digest не возвращают случайный беспорядок Unicode, они возвращают правильные хэши в двоичном формате. Если вы хотите увидеть "читаемую" версию, тогда hexdigest или base64digest:

Digest::SHA256.digest('pancakes')
# => "\xD0@;\xE2\x99\x9CH\x99\xEF:>=f\xD5]\xF4h\x9F\x7F\xC5~\xBF\x8A\xB5yu\x94\x92M\x12O\x99" 
Digest::SHA256.hexdigest('pancakes')
# => "d0403be2999c4899ef3a3e3d66d55df4689f7fc57ebf8ab5797594924d124f99" 
Digest::SHA256.base64digest('pancakes')
# => "0EA74pmcSJnvOj49ZtVd9Giff8V+v4q1eXWUkk0ST5k = " 

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

Pixelz 16.03.2018 06:16

Другие вопросы по теме