代码之家  ›  专栏  ›  技术社区  ›  Sallyerik

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

  •  -2
  • Sallyerik  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我想用密码术加密从用户输入中获得的消息:

    我有以下简单的代码:

    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)
    

    当我硬编码信息时 “秘密消息” 具有 代码中的前缀工作正常。 我想做的是使用 信息 变量从用户输入中获取文本。

    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操作系统

    2 回复  |  直到 6 年前
        1
  •  0
  •   myhaspldeep    6 年前
    #!/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
  •  0
  •   Vikrant Sharma    6 年前
    s = 'a secret message'
    b = s.encode('utf-8')