最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python rsa 加密解密

 更新時間:2017年03月20日 17:14:28   作者:cranezhou  
本篇文章主要介紹了python rsa加密解密 (編解碼,base64編解碼)的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧

最近有需求,需要研究一下RSA加密解密安全;在網(wǎng)上百度了一下例子文章,很少有文章介紹怎么保存、傳輸、打印加密后的文本信息,都是千篇一律的。直接在一個腳本,加密后的文本信息賦于變量,然后立馬調(diào)用解密。仔細想了一下RSA加密解密的過程,確定有二端,一端為:加密端,一端為解密端,一般不在同一臺機器。在這里,我只模擬了保存在文件,然后再讀出來;關(guān)于怎以通過網(wǎng)絡(luò)傳輸,也是大同小異。

用RSA加密后的密文,是無法直接用文本顯示,因為存在一些無法用文本信息編碼顯示的二進制數(shù)據(jù)。對于保存,網(wǎng)絡(luò)傳輸,打印不亂碼,需要通base64編碼進行轉(zhuǎn)換;base64編解碼能把一些無法直接用文件本信息編碼的二進制數(shù)據(jù),轉(zhuǎn)換成常規(guī)的二進制數(shù)據(jù)。

 #/usr/bin/env python
# -*- coding: utf-8 -*-
import rsa
import sys
import base64
# 打印 python 版本 與 windows 系統(tǒng)編碼
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'))

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)獲取實現(xiàn)圖片數(shù)據(jù)提取

    Python數(shù)據(jù)獲取實現(xiàn)圖片數(shù)據(jù)提取

    本文主要介紹了Python數(shù)據(jù)獲取實現(xiàn)圖片數(shù)據(jù)提取,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 使用python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度

    使用python搭建代理IP池實現(xiàn)接口設(shè)置與整體調(diào)度

    在網(wǎng)絡(luò)爬蟲中,代理IP池是一個非常重要的組件,由于許多網(wǎng)站對單個IP的請求有限制,因此,我們需要一個代理IP池,在本文中,我們將使用Python來構(gòu)建一個代理IP池,然后,我們將使用這個代理IP池來訪問我們需要的數(shù)據(jù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • pytorch使用voc分割數(shù)據(jù)集訓(xùn)練FCN流程講解

    pytorch使用voc分割數(shù)據(jù)集訓(xùn)練FCN流程講解

    這篇文章主要介紹了pytorch使用voc分割數(shù)據(jù)集訓(xùn)練FCN流程,圖像分割發(fā)展過程也經(jīng)歷了傳統(tǒng)算法到深度學(xué)習(xí)算法的轉(zhuǎn)變,傳統(tǒng)的分割算法包括閾值分割、分水嶺、邊緣檢測等等
    2022-12-12
  • Python使用貪婪算法解決問題

    Python使用貪婪算法解決問題

    這篇文章主要介紹了Python使用貪婪算法解決問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • python 利用文件鎖單例執(zhí)行腳本的方法

    python 利用文件鎖單例執(zhí)行腳本的方法

    今天小編就為大家分享一篇python 利用文件鎖單例執(zhí)行腳本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 深入理解Python虛擬機中常見魔術(shù)方法的使用

    深入理解Python虛擬機中常見魔術(shù)方法的使用

    本文主要給大家介紹在 python 當中與數(shù)學(xué)計算相關(guān)的一些常見的魔術(shù)方法,是在很多科學(xué)計算的包當中都使用到的魔術(shù)方法,感興趣的小伙伴可以了解一下
    2023-05-05
  • Python基于YOLOv8和OpenCV實現(xiàn)車道線和車輛檢測功能

    Python基于YOLOv8和OpenCV實現(xiàn)車道線和車輛檢測功能

    使用YOLOv8(You Only Look Once)和OpenCV實現(xiàn)車道線和車輛檢測,目標是創(chuàng)建一個可以檢測道路上的車道并識別車輛的系統(tǒng),并估計它們與攝像頭的距離,這篇文章主要介紹了Python基于YOLOv8和OpenCV實現(xiàn)車道線和車輛檢測,需要的朋友可以參考下
    2025-01-01
  • Python統(tǒng)計一個字符串中每個字符出現(xiàn)了多少次的方法【字符串轉(zhuǎn)換為列表再統(tǒng)計】

    Python統(tǒng)計一個字符串中每個字符出現(xiàn)了多少次的方法【字符串轉(zhuǎn)換為列表再統(tǒng)計】

    這篇文章主要介紹了Python統(tǒng)計一個字符串中每個字符出現(xiàn)了多少次的方法,涉及Python字符串轉(zhuǎn)換及列表遍歷、統(tǒng)計等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Windows下為Python安裝Matplotlib模塊

    Windows下為Python安裝Matplotlib模塊

    這篇文章主要介紹了如何在Windows下為Python安裝Matplotlib模塊的方法,非常的詳細,而且附上了官方的下載地址,小伙伴們操作起來應(yīng)該毫無壓力了。
    2015-11-11
  • Python中return用法案例詳解

    Python中return用法案例詳解

    這篇文章主要介紹了Python中return用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

潞西市| 绥棱县| 泌阳县| 东海县| 凤山市| 雷波县| 玛沁县| 阿拉善右旗| 新田县| 兴和县| 白沙| 佛山市| 呈贡县| 阜城县| 泉州市| 阳信县| 兴安县| 同江市| 阿拉尔市| 禹城市| 双牌县| 分宜县| 安丘市| 博罗县| 芒康县| 平顶山市| 北安市| 辽宁省| 白河县| 凌云县| 朔州市| 方山县| 鄂托克旗| 班戈县| 常山县| 平安县| 灵寿县| 金乡县| 和田市| 澄江县| 米易县|