【问题标题】:Converting a hexadecimal digest to base64 in Ruby在 Ruby 中将十六进制摘要转换为 base64
【发布时间】:2021-05-26 18:15:06
【问题描述】:

我有一个文件的 MD5 十六进制摘要的字符串表示形式,我想将其转换为 base64 以便在上传时使用 Content-MD5 HTTP 标头。有没有比以下更清晰或更有效的机制?

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

【问题讨论】:

  • 对我来说看起来非常清晰和高效。唯一可能更快/更清晰的是完全执行“hex_to_base64_digest”方法的本机钩子。

标签: ruby hex base64 md5 digest


【解决方案1】:

对我来说似乎非常清晰和高效。您可以通过为 'm' 包格式 (if count is 0, no line feed are added, see RFC 4648) 指定 0 计数来保存对 strip 的调用

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

【讨论】:

  • 谢谢,看起来可能是这样。似乎将每个参数包装在数组中是不整洁的。
  • 如果有人从 Base64 到 Hex 下面是我使用的方法。 ``` def base64_to_hex(base64_string) base64_string.scan(/.{4}/).map do |b| b.unpack('m0').first.unpack('H') end.join end* ```
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多