256位整数到256位字符串表示

时间:2013-11-16 00:28:08

标签: python encryption random bit-manipulation

在python中我使用Crypto package生成一个长度为256位的随机数。这样做的功能是

import Crypto.Random.random as rand
key = rand.getrandbits(256)  

这就是:

112699108505435943726051051450940377552177626778909564691673845134467691053980

现在我的问题是如何将此数字转换为所有ascii字符的字符串?这样做是否有内置功能,或者我是否需要将其转换为二进制并将其拆分为8个零和0的块并自己完成?

提前吃完。

1 个答案:

答案 0 :(得分:0)

我不知道它是否内置,但我对此表示怀疑。

但是,自己动手并不像将数据重新解释为字节那么容易。这是因为Ascii是一种7位编码方案。最重要的位始终为零。

最简单的方法是将int转换为打包的字节数组(to_bytes)[1],然后从每个字节中丢弃一个位,例如:通过右移。这浪费了你的熵的1/8,但是制作了一个更干净的程序。

这只能起作用,因为您正在使用加密安全的随机数生成源。这意味着每个位具有相等的概率为1或0 - 也就是说,每个位均匀分布并且独立于所有其他位。 [2]

[1] http://docs.python.org/3/library/stdtypes.html#additional-methods-on-integer-types [2] https://crypto.stackexchange.com/questions/10300/recasting-randomly-generated-numbers-to-other-widths