How to encrypt text with a password in python?

后端 未结 6 641
悲&欢浪女
悲&欢浪女 2020-12-01 03:02

Surprisingly difficult to find a straight answer to this on Google.

I\'m wanting to collect a piece of text and a message from a user such as 1PWP7a6xgoYx81VZo

6条回答
  •  無奈伤痛
    2020-12-01 03:54

    Here is my solution for anyone who may be interested:

    from Crypto.Cipher import AES  # pip install pycrypto
    import base64
    
    def cypher_aes(secret_key, msg_text, encrypt=True):
        # an AES key must be either 16, 24, or 32 bytes long
        # in this case we make sure the key is 32 bytes long by adding padding and/or slicing if necessary
        remainder = len(secret_key) % 16
        modified_key = secret_key.ljust(len(secret_key) + (16 - remainder))[:32]
        print(modified_key)
    
        # input strings must be a multiple of 16 in length
        # we achieve this by adding padding if necessary
        remainder = len(msg_text) % 16
        modified_text = msg_text.ljust(len(msg_text) + (16 - remainder))
        print(modified_text)
    
        cipher = AES.new(modified_key, AES.MODE_ECB)  # use of ECB mode in enterprise environments is very much frowned upon
    
        if encrypt:
            return base64.b64encode(cipher.encrypt(modified_text)).strip()
    
        return cipher.decrypt(base64.b64decode(modified_text)).strip()
    
    
    encrypted = cypher_aes(b'secret_AES_key_string_to_encrypt/decrypt_with', b'input_string_to_encrypt/decrypt', encrypt=True)
    print(encrypted)
    print()
    print(cypher_aes(b'secret_AES_key_string_to_encrypt/decrypt_with', encrypted, encrypt=False))
    

    Result:

    b'secret_AES_key_string_to_encrypt'
    b'input_string_to_encrypt/decrypt '
    b'+IFU4e4rFWEkUlOU6sd+y8JKyyRdRbPoT/FvDBCFeuY='
    
    b'secret_AES_key_string_to_encrypt'
    b'+IFU4e4rFWEkUlOU6sd+y8JKyyRdRbPoT/FvDBCFeuY=    '
    b'input_string_to_encrypt/decrypt'
    

提交回复
热议问题