最近有需求,需要研究一下RSA加密解密安全;在网上百度了一下例子文章,很少有文章介绍怎么保存、传输、打印加密后的文本信息,都是千篇一律的。直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密。仔细想了一下RSA加密解密的过程,确定有二端,一端为:加密端,一端为解密端,一般不在同一台机器。在这里,我只模拟了保存在文件,然后再读出来;关于怎以通过网络传输,也是大同小异。
用RSA加密后的密文,是无法直接用文本显示,因为存在一些无法用文本信息编码显示的二进制数据。对于保存,网络传输,打印不乱码,需要通base64编码进行转换;base64编解码能把一些无法直接用文件本信息编码的二进制数据,转换成常规的二进制数据。
#/usr/bin/env python # -*- coding: utf-8 -*- import rsa import sys import base64 # 打印 python 版本 与 windows 系统编码 print("---- 1 ----") print(sys.version) print(sys.getdefaultencoding()) print(sys.getfilesystemencoding()) # 先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用 print("---- 2 ----") (pubkey, privkey) = rsa.newkeys(1024) pub = pubkey.save_pkcs1() print(type(pub)) pubfile = open('public.pem','w+') pubfile.write(pub.decode('utf-8')) pubfile.close() print("---- 3 ----") pri = privkey.save_pkcs1() print(type(pri)) prifile = open('private.pem','w+') prifile.write(pri.decode('utf-8')) prifile.close() # load公钥和密钥 print("---- 4 ----") message = 'dPabdbGDpFTrwwgydVafdlsadlfsal%46645645s' print('message:',type(message)) with open('public.pem') as publickfile: p = publickfile.read() print(type(p)) pubkey = rsa.PublicKey.load_pkcs1(p.encode('utf-8')) with open('private.pem') as privatefile: p = privatefile.read() print(type(p)) privkey = rsa.PrivateKey.load_pkcs1(p.encode('utf-8')) # 用公钥加密、再用私钥解密 crypto = rsa.encrypt(message.encode('utf-8'),pubkey) print(crypto) print("---- 5 ----") print('crypto:',type(crypto)) print('cry_base64:',base64.encodestring(crypto)) print('cry_base64_utf8:',base64.encodestring(crypto).decode('utf-8')) # 保存到本地文件 cry_file = open('cry_file.txt','w+') cry_file.write(base64.encodestring(crypto).decode('utf-8')) cry_file.close() print("---- 6 ----") # 从本地文件读取 cry_file = open('cry_file.txt','r') cry_text = '' for i in cry_file.readlines(): cry_text += i print('cry_text_type:',type(cry_text)) print('cry_text:',cry_text) print('cry_base64:',cry_text.encode('utf-8')) crypto_tra = base64.decodestring(cry_text.encode('utf-8')) print("---- 7 ----") assert crypto == crypto_tra print(crypto) print("---- 8 ----") plaintext = rsa.decrypt(crypto,privkey) assert message == plaintext.decode('utf-8') print(plaintext.decode('utf-8'))
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- DzintraErliha-Dreamscape(2024)[24Bit-96kHz]FLAC
- 群星.1999-上华世纪国语总冠军4CD【上华】【WAV+CUE】
- 叶丽仪.1992-仙鹤神针电视剧原声音乐专辑【星传真】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 《51首热门当红歌曲 十大顶级发烧女声 3CD》[WAV+CUE][1.6GB]
- 《赵传 深受摇滚迷青睐的台湾音乐人 约定》[WAV+CUE][320MB]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]