非對稱加密算法RSA加密傳輸數據python3源代碼實現

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

import rsa# RSA 算法規定:
# 待加密的字節數不能超過密鑰的長度值除以 8 再減去 11NBIT = 4096
CAN_ENCODE_LEN = NBIT // 8 - 11
PER_ENCODE_LEN = CAN_ENCODE_LEN - (CAN_ENCODE_LEN % 2)
PER_DECODE_LEN = CAN_ENCODE_LEN + 11PUBKEY_STR = """"""PRIKEY_STR = """"""def gen_pem_file():(public_key, private_key) = rsa.newkeys(NBIT)  # rsa-4096 加密得到公鑰和私鑰# 將公鑰保存到文件with open('public.pem', 'wb') as file_pub:file_pub.write(public_key.save_pkcs1())# 將私鑰保存到文件with open('private.pem', 'wb') as file_pri:file_pri.write(private_key.save_pkcs1())if not PUBKEY_STR:# 取出公鑰try:with open('public.pem', 'rb') as __file_pub:PUBKEY_STR = __file_pub.read()except FileNotFoundError:gen_pem_file()with open('public.pem', 'rb') as __file_pub:PUBKEY_STR = __file_pub.read()if not PRIKEY_STR:# 取出私鑰try:with open('private.pem', 'rb') as __file_pri:PRIKEY_STR = __file_pri.read()except FileNotFoundError:gen_pem_file()with open('public.pem', 'rb') as __file_pub:PUBKEY_STR = __file_pub.read()with open('private.pem', 'rb') as __file_pri:PRIKEY_STR = __file_pri.read()PUBKEY = rsa.PublicKey.load_pkcs1(PUBKEY_STR)
PRIKEY = rsa.PrivateKey.load_pkcs1(PRIKEY_STR)# 加密字符串string
def rsa_str_encode(s):s = s.encode('utf-16')len_s = len(s)res = b''res_len=0while len_s - res_len > PER_ENCODE_LEN:res += rsa.encrypt(s[res_len:res_len+PER_ENCODE_LEN], PUBKEY)  # 使用公鑰去加密字符串res_len+=PER_ENCODE_LENprint('RSA加密 %d ... %.2f%%' % (res_len, 100* res_len/len_s))res += rsa.encrypt(s[res_len:], PUBKEY)  # 使用公鑰去加密字符串return res# 解密字符串string
def rsa_str_decode(s):len_s = len(s)res = b''res_len=0while len_s - res_len > PER_DECODE_LEN:res += rsa.decrypt(s[res_len:res_len+PER_DECODE_LEN], PRIKEY)  # 用私鑰去解密res_len+=PER_DECODE_LENprint('RSA解密 %d ... %.2f%%' % (res_len, 100 * res_len / len_s))res += rsa.decrypt(s[res_len:], PRIKEY)return res.decode('utf-16')# 加密字符串string list
def rsa_strs_encode(s):s = s.encode('utf-16')len_s = len(s)res_len=0while len_s - res_len > PER_ENCODE_LEN:yield rsa.encrypt(s[res_len:res_len+PER_ENCODE_LEN], PUBKEY)  # 使用公鑰去加密字符串res_len+=PER_ENCODE_LENyield rsa.encrypt(s[res_len:], PUBKEY)  # 使用公鑰去加密字符串# 解密字符串string list
def rsa_strs_decode(ss):for i, line in enumerate(ss):res = rsa.decrypt(line, PRIKEY)try:yield res.decode('utf-16')except UnicodeDecodeError:import tracebackprint(traceback.format_exc())if __name__ == '__main__':en_str = rsa_str_encode('dsde軍鱷科!@#¥cvr$#2#@1~~!@!#,.,2p4pfvwdwefv1234678435092430r098ygoiufvre2vdvwdvwfvw,.efkiv3evclkvs你'*12)de_crypt = rsa_str_decode(en_str)  # 用私鑰去解密print(de_crypt)en_strs = rsa_strs_encode('dsde軍鱷科!@#¥cvr$#2#@1~~!@!#,.,2p4pfvwdwefv1234678435092430r098ygoiufvre2vdvwdvwfvw,.efkiv3evclkvs你' * 122)de_crypts = rsa_strs_decode(en_strs)  # 用私鑰去解密# print(''.join(de_crypt))for _ in de_crypts:print(_)

轉載于:https://my.oschina.net/readerror/blog/2885260

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276859.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(Microsoft) Visual Studio LightSwitch

在藍色小鋪,聽到了前輩 阿源哥哥提到 Visual Studio LightSwitch"號稱" 可以快速開發桌面、云端的應用程序。http://www.microsoft.com/visualstudio/en-us/lightswitch (這里也提供下載) 原廠提供的圖片: 跟「正…

Python: 反方向迭代一個序列

使用內置的reversed()函數 >>> a [1, 2, 3, 4] >>> for x in reversed(a): ... print(x)out 4 3 2 1反向迭代僅僅當對象的大小可預先確定或者對象實現了 _reversed_()的特殊方法時才能生效。如果兩者都不符合 ,必須將對象轉換成一個列表才行。 f…

jsp調用controller方法_RPC調用_服務注冊與發現

RPC調用_單體架構_SOA架構系統架構的演變 1 傳統的單體架構 1.1 什么是單體架構 一個歸檔包(例如 war 格式或者 Jar 格式)包含了應用所有功能的應用程序,我們通常稱之 為單體應用。也稱之為單體應用架構,這是一種比較傳統的架構風…

MFC項目實戰(1)文件管理器--準備篇

本程序主要實現如下功能: 程序通過左邊的樹形控件顯示本地計算機中目錄的結構,右邊的列表控件則負責響應樹形控件中選擇的目錄節點并把此節點中的所有項在列表框中顯示出來,列表框支持奇偶行顏色設置,選中顏色設置和熱點顏色設置&…

服務器tomcat配置教程

2018年上學期期末課程設計做了一個留言板,但是我需要把這個Jave Web弄到我的服務器上 首先我們可以安裝jdk tomcat在啟動時,會讀取環境變量的信息,需要一個CATALINA_HOME 與JAVA_HOME的信息 CATALINA_HOME即tomcat的主目錄, JAVA_…

使用tab鍵分割的文章能快速轉換成表格。( )_EXCEL的163種使用技巧集錦-42~62

本文主要講述了EXCEL的163種使用技巧其中20條技巧,待163種使用技巧全部講述完成后,如有需要,各位看官可在評論中留下郵箱,小編會將整理的WORD版發給大家。42. 快速查找工作簿 你可以利用在工作表中的任何文字進行搜尋,…

負載測試工具Ripplet

負載測試工具RippletRipplet的最新版本:0.8bRipplet特征:1)基于Apache License 2.0許可證;2)軟件程序性能和負載測試工具;3)有四個分布式的Java組件:測試注入引擎、服務器/產品監視器…

解決ubuntu中vi不能正常使用方向鍵與退格鍵的問題

方案一: 問題: ubuntu中vi在編輯狀態下方向鍵不能用,還有回格鍵不能刪除等我們平時習慣的一些鍵都不能使用。 解決辦法: 可以安裝vim full版本,在full版本下鍵盤正常,安裝好后同樣使用vi命令。 安裝vim&…

android通過代碼設置鈴聲_第六十四回:Android中UI控件之SeekBar

各位看官們,大家好,上一回中咱們說的是Android中UI控件之ProgressBar的例子,這一回咱們的例子是UI控件之SeekBar。閑話休提,言歸正轉。讓我們一起Talk Android吧!看官們,SeekBar通常翻譯為拖動條&#xff0…

轉帖:組策略

1.什么是組策略 注冊表是Windows系統中保存系統軟件和應用軟件配置的數據庫,而隨著Windows功能越來越豐富,注冊表里的配置項目也越來越多,很多配置都可以自定義設置,但這些配置分布在注冊表的各個角落,如果是手工配置&…

SQL中的left outer join,inner join,right outer join用法 (左右內連接)

SQL語句中的left outer join,inner join,right outer join用法left outer joinleft join , right outer joinright join, inner joinjoin.使用關系代數合并數據 1 關系代數 合并數據集合的理論基礎是關系代數,它是由E.F.Codd于1970年提出的。 在關系代數的形式…

利舊IBM X3650m2 安裝esxi5.1提供云桌面(備忘)

上面左邊是我的個人微信,如需進一步溝通,請加微信。 右邊是我的公眾號“Openstack私有云”,如有興趣,請關注。公司有一臺舊服務器,原來的IBM X3650m2 服務器,2物理CPU,24G內存,8塊3…

asp登錄頁面跳轉到注冊頁面_Java 添加頁面跳轉按鈕到PDF文檔

概述當我們在查閱含有大量頁面的PDF時,可通過在頁面上添加跳轉按鈕來實現頁面轉換,以達到節約時間,提高效率的目的。本文將通過Java程序來演示如何給PDF文檔添加頁面跳轉按鈕。通常來說跳轉可分為兩種情況:一是跳轉至特殊頁面(首頁…

和我一起學WCF(6):宿主(Hosting)

WCF所支持的宿主服務: 1.Self-hosting:控制臺應用程序,Windows應用程序,Windows服務,HTTP,TCP,named pipes,MSMQ 2.IIS/ASP.NET 3.Windows Activation Service ServiceHost實例必須進行初始化為服務暴露出端點(endpoint) 每個ServiceHost與指定的服務類型相關聯 核心方法: Open…

.Net FrameWork

.NET Micro Framework白皮書http://download.microsoft.com/download/3/1/9/319f7469-70bd-4e7c-a6cc-e5ad96939af4/net_micro_framework_whitepaper_v_1.0.docWhat is "Type" in managed heap?http://www.cnblogs.com/artech/archive/2007/06/04/769805.html轉載于…

Retrofit+RxJava聯網工具類

在python 進程、線程 (一)中簡單的說過,CPython中的GIL使得同一時刻只能有一個線程運行,即并發執行。并且即使是多核CPU,GIL使得同一個進程中的多個線程也無法映射到多個CPU上運行,這么做最初是為了安全著想,慢慢的也成…

確定最佳聚類數matlab代碼_詳解DBSCAN聚類

使用DBSCAN標識為員工分組照片由Ishan seefromthesky 在 Unsplash拍攝基于密度的噪聲應用空間聚類(DBSCAN)是一種無監督的ML聚類算法。無監督的意思是它不使用預先標記的目標來聚類數據點。聚類是指試圖將相似的數據點分組到人工確定的組或簇中。它可以替代KMeans和層次聚類等流…

Arrays.asList 使用細節

通常初始化后使用如下,但是報錯 UnsupportOperationException.... 根據提示信息,就是調用add()方法時拋出了異常。順著堆棧信息往上找,提示的是AbstractList類的108行出了異常,這一行所在方法的具體實現如下: //108行 …

[分享] 精神崩潰的老鼠

李國棟床上堆著書,每天晚上睡在榻榻米上,讀書讀到凌晨一兩點,讀到兩眼充血,像針扎一樣痛苦,才把書放開。蜷縮到榻榻米上,用繩子把左腿跟一只桌腳綁在一起,熄了燈睡覺。 “這樣一來&#xff0…

(七)整合spring cloud云服務架構 - common-service 項目構建過程

我們將對common-service整個項目進行剖析,將整個構建的流程給記錄下來,讓更多的關注者來參考學習。首先在構建spring cloud的common-service之前,我們需要準備的技術:Maven(項目構建)、Spring Boot、Spring…