Преобразование шестнадцатеричного дайджеста в base64 в Ruby - PullRequest
9 голосов
/ 03 апреля 2012

У меня есть строковое представление шестнадцатеричного дайджеста MD5 для файла, который я хочу преобразовать в base64, чтобы использовать HTTP-заголовок Content-MD5 при его загрузке. Есть ли более ясный или более эффективный механизм, чем следующий?

def hex_to_base64_digest(hexdigest)
  [[hexdigest].pack("H*")].pack("m").strip
end

hex_digest = "65a8e27d8879283831b664bd8b7f0ad4"
expected_base64_digest = "ZajifYh5KDgxtmS9i38K1A=="

raise "Does not match" unless hex_to_base64_digest(hex_digest) === expected_base64_digest

1 Ответ

22 голосов
/ 03 апреля 2012

Кажется довольно ясным и эффективным для меня.Вы можете сохранить вызов на полосу, указав счет 0 для формата пакета 'm' (если счет равен 0, перевод строки не добавляется, см. RFC 4648)

def hex_to_base64_digest(hexdigest)
  [[hexdigest].pack("H*")].pack("m0")
end
...