用PGPy实现的PGP加密传输代码。代码只是很粗浅的应用,其他的加密方式在注释中。最下面有演示成功的视频。

# coding:utf-8

from pgpy.constants import PubKeyAlgorithm, KeyFlags, HashAlgorithm, SymmetricKeyAlgorithm, CompressionAlgorithm
import pgpy
from datetime import timedelta
import os
import glob
key = pgpy.PGPKey.new(PubKeyAlgorithm.RSAEncryptOrSign, 4096)
uid = pgpy.PGPUID.new('Jens Lee')  # comment and email are optional
key.add_uid(uid, usage={KeyFlags.Sign, KeyFlags.EncryptCommunications, KeyFlags.EncryptStorage},
            hashes=[HashAlgorithm.SHA256, HashAlgorithm.SHA384, HashAlgorithm.SHA512, HashAlgorithm.SHA224],
            ciphers=[SymmetricKeyAlgorithm.AES256, SymmetricKeyAlgorithm.AES192, SymmetricKeyAlgorithm.AES128],
            compression=[CompressionAlgorithm.ZLIB, CompressionAlgorithm.BZ2, CompressionAlgorithm.ZIP, CompressionAlgorithm.Uncompressed],key_expires=timedelta(days=365))
file_message = pgpy.PGPMessage.new("/home/zlee/gpg", file=True)
message = file_message


pub_key = key.pubkey

encrypted_message = pub_key.encrypt(message)

fp = open("/home/zlee/zlee.txt.gpg.gpg","w")     #直接打开一个文件,如果文件不存在则创建文件
fp.write(str(encrypted_message))                      #把str写到文件中,write()并不会在str后加上一个换行符
fp.close()

#print(encrypted_message)

f = open("/home/zlee/zlee.txt.gpg", "r")  # 打开文件
data = f.read() # 读取剩下所有内容,文件大时候不要用
f.close()  #关闭文件

dec_message = key.decrypt(encrypted_message).message

print(dec_message)

'''
enc_message = message.encrypt("123")
print(enc_message)
dec_message = enc_message.decrypt("123")
print(dec_message)
'''
# ASCII armored
#msgstr = str(message)

#key.protect("123", SymmetricKeyAlgorithm.AES256, HashAlgorithm.SHA256)


#print(dec_message)
'''
key.protect("123", SymmetricKeyAlgorithm.AES256, HashAlgorithm.SHA256)

pub_key = key.pubkey
print(key)
encrypted_message = pub_key.encrypt(message)

with key.unlock("123") as ukey:
    print(ukey)
    dec_message = encrypted_message.decrypt(ukey)
    #print(dec_message)
'''
'''
#dec_message = encrypted_message.decrypt(key)


enc_message = encrypted_message

enc_message = message.encrypt(pub_key)

dec_message = enc_message.decrypt(pub_key)


pgpobj = dec_message

pgpstr = str(pgpobj)

pgpbytes = pgpobj.__bytes__()
#print('zlee :', pgpstr)
'''

成功运行的演示视频:

链接:https://pan.baidu.com/s/1_nMju6yUw3EvY4w5KkE0rQ
提取码:5560