2012-04-03 21 views
7

Tengo una representación de cadena de un resumen hexadecimal MD5 para un archivo, que quiero convertir a base64 para usar el encabezado HTTP Content-MD5 al cargarlo. ¿Hay un mecanismo más claro o más eficiente para hacer que el siguiente?Conversión de un resumen hexadecimal a base64 en Ruby

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 
+0

se ve muy clara y eficiente para mí. Lo único que podría ser más rápido/más claro es un enlace nativo que hace exactamente el método "hex_to_base64_digest". – maerics

Respuesta

17

Parece bastante claro y eficiente para mí. Puede guardar la llamada para despojar especificando 0 conteo para el formato de paquete 'm' (if count is 0, no line feed are added, see RFC 4648)

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

Gracias, parece que ese puede ser el caso. Solo parece que envolver cada parámetro en una matriz es desordenado. – steveh7

Cuestiones relacionadas