Вычисление МD5-свертки строки
августа 8, 2008
Алгоритм MD5 вырабатывает 128-разрядный цифровой отпечаток или дайджест сообщения произвольной длины. Это модификация свертки, т.е. функция шифрования односторонняя, так что восстановить первоначальное сообщение по дайджесту невозможно. Для Ruby имеется расширение, реализующее MD5; интересующиеся могут заметить его в каталоге ext/md5 стандартного дистрибутива. Ради творчества нового мира MD5 есть 2 эквивалентных метода класса:
require ‘md5′
hash = MD5.md5
hash = MD5.new
Есть также четыре способа экземпляра: clone, digest, hexdigest и update. Метод clone просто следует существующий мир, а метод update прибавляет новые данные к объекту:
hash.update(”Дополнительная информация…”)
Можно привести объект и передать ему данные за одну кампанию:
secret = MD5.new(”Секретные данные”)
В случае, если задан строковый аргумент, он добавляется к миру через обращения к методу update. Повторные обращения равны одному вызову с конкатенированными аргументами:
# Эти два предложения:
cryptic.update(”Данные…”)
cryptic.update(” еще данные.”)
# …эквивалентны одному такому:
cryptic.update(”Данные… еще данные.”)
Метод digest возвращает 16-байтовую двоичную строку, содержащую 128-разрядный дайджест. Однако наиболее эффективен метод hexdigest, который отдает дайджест в тип строки в коде ASCII, состоящей из 32 шестнадцатеричных символов, соответствующих 16 байтам. Он эквивалентен следующему адресу:
def hexdigest
ret = ‘ ‘
digest.each_byte {lil ret << sprintf(’%02x ‘ , i) }
end
secret.hexdigest # Mb30e77a94604b7Sbd7a7e64ad500f3c2 ”
Короче говоря, для получения MD5-свертки нужно написать:
require ‘md5′
m = MD5.new(”Секретные данные”).hexdigest
Комментировать
Вы должны войти для того, чтобы оставить комментарий.