如何在python中将字符串变量转换为字节类型? [复制]

Posted

技术标签:

【中文标题】如何在python中将字符串变量转换为字节类型? [复制]【英文标题】:How can I convert string variable into byte type in python? [duplicate] 【发布时间】:2019-03-26 09:09:08 【问题描述】:

我想使用 Cryptography 对从用户输入中获得的消息进行加密:

我有以下简单的代码:

import os
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
backend = default_backend()
messages = input("Please, insert messages to encrypt: ")
key = os.urandom(24)
print(key)
cipher = Cipher(algorithms.TripleDES(key), modes.ECB(), backend=backend)
encryptor = cipher.encryptor()
cryptogram = encryptor.update(b"a secret message") + encryptor.finalize()
print(cryptogram)

当我在代码中对带有 b 前缀的消息 "a secret message" 进行硬编码时,它可以正常工作。 我想做的是使用 messages 变量从用户输入中获取文本。

messages = input("Please, insert messages to encrypt: ")

我尝试了几种方法将字符串类型从输入转换为字节类型并将其传递给 encryptor.update 方法,但对我没有任何作用。

messages = input(b"Please, insert messages to encrypt: ")
cryptogram = encryptor.update(byte, message) + encryptor.finalize()
...

版本:

Python 3.7.0

密码学 2.4

Mac 操作系统

【问题讨论】:

搜索起来很简单。下次请寻找重复的问题。这将节省您编写长问题的精力,而我们则无需关闭它。 感谢您的建议,抱歉,我找不到。 【参考方案1】:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Oct  2 13:23:27 2018

@author: myhaspl
@email:myhaspl@myhaspl.com
@blog:dmyhaspl.github.io
"""
import os
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
padder = padding.PKCS7(128).padder()
backend = default_backend()
key = os.urandom(32)
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
messages = input("Please input your message: ")
messages=bytes(messages,"utf-8")
padded_data = padder.update(messages )
padded_data += padder.finalize()
print(padded_data)
ct = encryptor.update(padded_data) + encryptor.finalize()
decryptor = cipher.decryptor()
decryptorData=decryptor.update(ct) + decryptor.finalize()
unpadder = padding.PKCS7(128).unpadder()
data = unpadder.update(decryptorData)
print(data + unpadder.finalize())

Please input your message: hello,world! I am dmyhaspl.my blog is dmyhaspl.github.io
b'hello,world! I am dmyhaspl.my blog is dmyhaspl.github.io\x08\x08\x08\x08\x08\x08\x08\x08'
b'hello,world! I am dmyhaspl.my blog is dmyhaspl.github.io'
>>> 

【讨论】:

【参考方案2】:
s = 'a secret message'
b = s.encode('utf-8')

【讨论】:

以上是关于如何在python中将字符串变量转换为字节类型? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在python中将字节转换为位

如何在 Python 中将 DWORD 转换为字符串

在 Python 中将十六进制字符串转换为字节列表

如何在python中将变量转换为字符串

如何在 python 中将字符串转换为有效的变量名?

如何在 Python 中将字符串转换为十六进制整数?