在Python脚本中,我有一个变量key
,由值为key = F9hygcyyB2h1S0+2urrsHknqqGPx693s
的AES解密算法输出。你知道吗
此变量的长度似乎为32个字符。但是,运行len(key)
返回48
。为什么会这样?你知道吗
key
len(key) = 48
type(key) = <type 'str'>, Unicode? False
print (key) = None.
str(key) = F9hygcyyB2h1S0+2urrsHknqqGPx693s
repr(key) = 'F9hygcyyB2h1S0+2urrsHknqqGPx693s\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10'
key = key.encode('ascii', 'ignore')
Length: 48. Type: <type 'str'>, Unicode? False
key = unicode(key)
Length: 48. Type: <type 'unicode'>, Unicode? True
key = key.decode('utf-8')
Length: 48. Type: <type 'unicode'>, Unicode? True
key
变量是AES.new(key, AES.MODE_CBC, iv)
解码过程的输出,我相信repr(key)
中显示的不可打印字符实际上是填充。因为我知道密钥的长度应该是32个字符,所以只需添加:
key = key[0:32]
这样就消除了所有不可打印的字符,并且在测试中证明它等于预期的值。你知道吗
看起来在
key
中有一些不可打印的字符。您可以轻松摆脱它们:但这将是一个不同的钥匙!你知道吗
相关问题 更多 >
编程相关推荐