0
点赞
收藏
分享

微信扫一扫

利用pgpy实现PGP通讯

用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


举报

相关推荐

0 条评论