python3中rsa加密算法詳情
前言:
rsa加密,是一種加密算法,目前而言,加密算法,是對(duì)數(shù)據(jù)、密碼等進(jìn)行加密。第一次接觸rsa加密算法是linux中免密登陸設(shè)置,當(dāng)時(shí)一直以為密鑰加密是像token一樣的,直到現(xiàn)在才發(fā)現(xiàn)并不是,而是一種數(shù)據(jù)加密的方式,其實(shí)也可以理解,在Linux設(shè)計(jì)哲學(xué)的理解下:“一切皆文件”,就可以把他們當(dāng)成類似的東西來理解。無非就是拿著a字符串和b字符串進(jìn)行比較,如果返回trun,那么就可以進(jìn)行下一步的操作,否則就會(huì)被返回異常。
在這里,其實(shí)有一個(gè)邏輯,就是先把數(shù)據(jù)進(jìn)行一次加密,然后進(jìn)行數(shù)據(jù)傳輸,在接收到數(shù)據(jù)后,發(fā)現(xiàn)數(shù)據(jù)是亂碼,或者說是加密過后的數(shù)據(jù),所以想要看到實(shí)際數(shù)據(jù),就需要對(duì)數(shù)據(jù)進(jìn)行解密。
所以在常規(guī)的加密過程中,許多接口中的數(shù)據(jù)我們是已經(jīng)可以獲取到的,但是獲取到的數(shù)據(jù)是亂碼,一般如果想要繼續(xù)增加安全性,就可以在獲取數(shù)據(jù)的時(shí)候加簽,即在給訪問接口的服務(wù)返回?cái)?shù)據(jù)時(shí),就進(jìn)行驗(yàn)證,在他發(fā)送接收數(shù)據(jù)請(qǐng)求時(shí),就拒絕他。
也就是說,目前的接口加密,其實(shí)是從兩個(gè)點(diǎn)出發(fā):
- 一、接收數(shù)據(jù)請(qǐng)求時(shí)(數(shù)據(jù)返回前)
- 二、數(shù)據(jù)本身加密(數(shù)據(jù)返回后)(如果請(qǐng)求,就把數(shù)據(jù)返回,但是我賭的是他拿到數(shù)據(jù)也不會(huì)解讀出來。狗頭)
就目前而言,我所能想到的加密方案,也都是對(duì)字符串加密,或者對(duì)一些標(biāo)識(shí)符進(jìn)行加密,也就是發(fā)生在數(shù)據(jù)返回前所發(fā)生的事件。不知道別的大佬還有沒有別的騷操作。
技術(shù)測(cè)試實(shí)現(xiàn):
在這里使用rsa包直接進(jìn)行,python第三方庫實(shí)現(xiàn)加密的還有一個(gè)pycryptodome,兩個(gè)包都可以實(shí)現(xiàn)。在這里使用rsa。
代碼邏輯簡單說一下,也做了幾個(gè)測(cè)試:
- 一、直接生成密鑰,然后進(jìn)行加密,解密,
- 二、先生成密鑰,然后將密鑰寫入文件保留下來,然后再讀出來使用
- 三、直接生成密鑰,然后將密鑰寫成字符串,放在代碼中,直接使用
上述三種,其實(shí)從邏輯上講,都應(yīng)該是支持的,如果不支持,那么就應(yīng)該是過程中某個(gè)地方的格式有問題。需要進(jìn)行常規(guī)處理。
在使用過程中,有一個(gè)地方需要特別注意,就是需要加密的字符串要進(jìn)行encoding,在解密是需要進(jìn)行decode。不要忘記這一點(diǎn)。否則你會(huì)發(fā)現(xiàn)加密時(shí)就會(huì)報(bào)錯(cuò)。
import rsa def secorty_data(): ? ? (pub_key,sec_key) = rsa.newkeys(1024) ? ? pub = pub_key.save_pkcs1() ? ? file = open('./pub.pem','wb+') ? ? file.write(pub) ? ? sec = sec_key.save_pkcs1() ? ? files = open('./sec.pem','wb+') ? ? files.write(sec) def create_rsa(): ? ? file = open('./pub.pem','rb') ? ? content = file.read() ? ? print(content) ? ? file1 = open('./sec.pem','rb') ? ? content1 = file1.read() ? ? print(content1) ? ? pub_key = rsa.PublicKey.load_pkcs1(content) ? ? sec_key = rsa.PrivateKey.load_pkcs1(content1) ? ? message = '今天的天氣有點(diǎn)熱,但整體還是很好' ? ? data = rsa.encrypt(message.encode(),pub_key) ? ? print(data) ? ? result = rsa.decrypt(data,sec_key) ? ? print(result.decode()) if __name__ == '__main__': ? ? ? ? secorty_data() ? ? ? ? create_rsa()
到此這篇關(guān)于python3中rsa加密算法詳情的文章就介紹到這了,更多相關(guān) rsa加密 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tensorflow模型保存、加載之變量重命名實(shí)例
今天小編就為大家分享一篇tensorflow模型保存、加載之變量重命名實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python生成tensorflow輸入輸出的圖像格式的方法
本篇文章主要介紹了python生成tensorflow輸入輸出的圖像格式的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02python 消費(fèi) kafka 數(shù)據(jù)教程
今天小編就為大家分享一篇python 消費(fèi) kafka 數(shù)據(jù)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12關(guān)于win10在tensorflow的安裝及在pycharm中運(yùn)行步驟詳解
這篇文章主要介紹了關(guān)于win10在tensorflow的安裝及在pycharm中運(yùn)行的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03使用python刪除nginx緩存文件示例(python文件操作)
這篇文章主要介紹了使用python刪除nginx緩存文件示例(python文件操作),需要的朋友可以參考下2014-03-03pandas初學(xué)者容易犯的六個(gè)錯(cuò)誤總結(jié)
Pandas是Python的一個(gè)數(shù)據(jù)分析包,該工具為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建,Pandas納入大量庫和標(biāo)準(zhǔn)數(shù)據(jù)模型,提供高效的操作數(shù)據(jù)集所需的工具,這篇文章主要給大家介紹了總結(jié)介紹了pandas初學(xué)者容易犯的六個(gè)錯(cuò)誤,需要的朋友可以參考下2021-10-10