如何将十六进制字符串转换回它的'SecureRandom.random_bytes'二进制文件?

时间:2016-10-19 19:26:45

标签: ruby encryption binary hex

在Ruby中,我可以创建一个16字节的二进制文件并将其转换为十六进制字符串:

key     = SecureRandom.random_bytes(16)                    # => "hN\xDB\xAD\xAF\xB3R\xC0`\xB19\x1D\x19.\xD3I"
hex_key = key.each_byte.map { |byte| '%02x' % byte }.join  # => "684edbadafb352c060b1391d192ed349"

在PHP和Javascript中,我可以将十六进制字符串转换回它的16字节二进制文件。

PHP:

<?php
hex2bin("684edbadafb352c060b1391d192ed349");
?>

Javascript via CryptoJS

CryptoJS.enc.Hex.parse("684edbadafb352c060b1391d192ed349");

但是如何使用Ruby将十六进制字符串转换回16字节的二进制文件?

1 个答案:

答案 0 :(得分:4)

这是你在找什么?

[str].pack('H*').bytes.to_a

或只是

[str].pack('H*')