用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