[python]bytes型和string型的转换

数据加解密时通常是以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'

虽然都是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))

得到结果为:
在这里插入图片描述
无论哪种类型,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))

得到:
在这里插入图片描述
若初始明文消息为message2的形式,加密后我无法将密文转换为这种形式,导致无法解密。因此将明文转为message1的形式,便于后续处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值