Python有一个非常方便的方法来获得加密安全的随机十六进制;secrets.token_hex(n)
所以通过运行secrets.token_hex(8)你得到16个十六进制,secrets.token_hex(12)得到24个十六进制等等。基本上没有上限。括号中的数字是以字节为单位的。
我的问题是,最近开始学习Rust,是否有类似的智能方法来获得非常高的随机十六进制输出?
在Python中:
import secrets
for x in range(1):
xxx = secrets.token_hex(8)
2条答案
按热度按时间x6yk4ghg1#
token_hex
实际上就是token_bytes
的十六进制编码,这就是为什么要指定字节数:因此,虽然 rust 没有这样做的开箱即用(更不用说内置)的解决方案很简单:生成随机字节,然后对其进行十六进制编码。
有趣的是,十六进制编码是这两种编码中更令人讨厌的一种(无论如何在操场上),因为
&[u8]
没有实现LowerHex
,但操场上既没有hex
也没有rustc_serialize
(我相信这是两种最流行的十六进制编码,if you don't want to hand-roll it)。不管怎样,
对于单表达式版本,您可以使用
Rng::gen
,但我认为它不适用于运行时大小,并且我认为它看起来也不太好:rjzwgtxy2#
这似乎是一个解决方案。只要改变16所需的十六进制数。32将给予64十六进制。