python-bytes型和string型的转换

发布时间 2023-12-19 15:48:34作者: 黯oo然

https://blog.csdn.net/weixin_43936250/article/details/124410127

数据加解密时通常是以bytes形式存储,加解密算法运行前需要先对数据进行处理。
以SM4算法示例数据为例,待加密数据为:0123456789abcdeffedcba9876543210,bytes类型则有两种表示方式

message1 = b'0123456789abcdeffedcba9876543210'
message2 = b'\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10'
1
2
虽然都是bytes类型,但它们的长度并不相同。运行如下代码:

print('message1:',message1)
print('message2:',message2)
print('message1_type:',type(message1))
print('message2_type:',type(message2))
print('message1_length:',len(message1))
print('message2_length:',len(message2))
1
2
3
4
5
6
得到结果为:

无论哪种类型,SM4计算时要将其分为4个32位数据处理。我的想法是先转为字符串,然后截取。两种转换方式分别为:

msg1_str = message1.decode()
msg2_str = message2.hex()

print('msg1_str:',msg1_str)
print('msg2_str:',msg2_str)
print('msg1_type:',type(msg1_str))
print('msg2_type:',type(msg2_str))
1
2
3
4
5
6
7
得到:

若初始明文消息为message2的形式,加密后我无法将密文转换为这种形式,导致无法解密。因此将明文转为message1的形式,便于后续处理。
————————————————
版权声明:本文为CSDN博主「Bbeibeibear」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43936250/article/details/124410127