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

Chr*_*sen 1 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"
Run Code Online (Sandbox Code Playgroud)

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

PHP:

<?php
hex2bin("684edbadafb352c060b1391d192ed349");
?>
Run Code Online (Sandbox Code Playgroud)

通过CryptoJS的 Javascript :

CryptoJS.enc.Hex.parse("684edbadafb352c060b1391d192ed349");
Run Code Online (Sandbox Code Playgroud)

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

Jay*_*Jay 5

这是你想要的?

[str].pack('H*').bytes.to_a
Run Code Online (Sandbox Code Playgroud)

要不就

[str].pack('H*')
Run Code Online (Sandbox Code Playgroud)