如何构造一个 16 字节长的 Python 字符串?
How can I construct a Python string that is 16 bytes long?
当我制作一个 Python 个字符的字符串时,即
txt = "h"
然后我检查它的大小,我得到
import sys
sys.getsizeof(txt)
34
如果一个字符是 34 字节,我如何制作一个 16 字节的字符串?
P.S。我正在玩 PyCrypto AES, in OFB Mode,它需要输入 16 个字节
getsizeof
不是 return 字符串的实际大小,但它占了额外的垃圾收集器开销。
如下所示 test
以空字符串开始,但由于上述原因,为其分配的内存不为零。
>>> test = ""
>>> sys.getsizeof(test)
37
>>> test = "" + "h"
>>> sys.getsizeof(test)
38
>>> test = "" + "h" + "h"
>>> sys.getsizeof(test)
39
>>>
要创建一个 16 字节的字符串,一种方法是:
>>> test = " " * 16
>>> sys.getsizeof(test)
53
53 - 37 = 16 字节
sys.getsizeof(obj)
returns 对象的大小,包括内部值。这包含的不仅仅是字符串的字符或字节。
如果你想知道一个bytes
对象或一个str
有多长,那么你可以调用len(byteString)
或len(string)
。
我假设您想使用生成随机 IV 或密钥。这可以通过以下方式完成:
from Crypto import Random
iv = Random.new().read(16)
如果系统有足够的熵,这将调用 CSPRNG。您也可以使用 AES.block_size
而不是 16
。
当我制作一个 Python 个字符的字符串时,即
txt = "h"
然后我检查它的大小,我得到
import sys
sys.getsizeof(txt)
34
如果一个字符是 34 字节,我如何制作一个 16 字节的字符串?
P.S。我正在玩 PyCrypto AES, in OFB Mode,它需要输入 16 个字节
getsizeof
不是 return 字符串的实际大小,但它占了额外的垃圾收集器开销。
如下所示 test
以空字符串开始,但由于上述原因,为其分配的内存不为零。
>>> test = ""
>>> sys.getsizeof(test)
37
>>> test = "" + "h"
>>> sys.getsizeof(test)
38
>>> test = "" + "h" + "h"
>>> sys.getsizeof(test)
39
>>>
要创建一个 16 字节的字符串,一种方法是:
>>> test = " " * 16
>>> sys.getsizeof(test)
53
53 - 37 = 16 字节
sys.getsizeof(obj)
returns 对象的大小,包括内部值。这包含的不仅仅是字符串的字符或字节。
如果你想知道一个bytes
对象或一个str
有多长,那么你可以调用len(byteString)
或len(string)
。
我假设您想使用生成随机 IV 或密钥。这可以通过以下方式完成:
from Crypto import Random
iv = Random.new().read(16)
如果系统有足够的熵,这将调用 CSPRNG。您也可以使用 AES.block_size
而不是 16
。