繁体   English   中英

如何构造一个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个字节的字符串?

PS我正在OFB模式下使用PyCrypto AES ,它需要输入16个字节

sys.getsizeof(obj)返回对象的大小,包括内部值。 它包含的内容不止一个字符串的字符或字节。

如果您想知道bytes对象或str多长时间,则可以调用len(byteString)len(string)

我假设您要使用生成随机IV或密钥。 这可以通过以下方式完成:

from Crypto import Random
iv = Random.new().read(16)

如果系统具有足够的熵,则将调用CSPRNG。 您也可以使用AES.block_size而不是16

getsizeof不会返回字符串的实际大小,但是会导致额外的垃圾回收器开销。 如图所示,波纹管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字节

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM