網站首頁 Python教程 正文
前言:
rsa加密,是一種加密算法,目前而言,加密算法,是對數據、密碼等進行加密。第一次接觸rsa加密算法是linux中免密登陸設置,當時一直以為密鑰加密是像token一樣的,直到現在才發現并不是,而是一種數據加密的方式,其實也可以理解,在Linux設計哲學的理解下:“一切皆文件”,就可以把他們當成類似的東西來理解。無非就是拿著a字符串和b字符串進行比較,如果返回trun,那么就可以進行下一步的操作,否則就會被返回異常。
在這里,其實有一個邏輯,就是先把數據進行一次加密,然后進行數據傳輸,在接收到數據后,發現數據是亂碼,或者說是加密過后的數據,所以想要看到實際數據,就需要對數據進行解密。
所以在常規的加密過程中,許多接口中的數據我們是已經可以獲取到的,但是獲取到的數據是亂碼,一般如果想要繼續增加安全性,就可以在獲取數據的時候加簽,即在給訪問接口的服務返回數據時,就進行驗證,在他發送接收數據請求時,就拒絕他。
也就是說,目前的接口加密,其實是從兩個點出發:
- 一、接收數據請求時(數據返回前)
- 二、數據本身加密(數據返回后)(如果請求,就把數據返回,但是我賭的是他拿到數據也不會解讀出來。狗頭)
就目前而言,我所能想到的加密方案,也都是對字符串加密,或者對一些標識符進行加密,也就是發生在數據返回前所發生的事件。不知道別的大佬還有沒有別的騷操作。
技術測試實現:
在這里使用rsa包直接進行,python第三方庫實現加密的還有一個pycryptodome,兩個包都可以實現。在這里使用rsa。
代碼邏輯簡單說一下,也做了幾個測試:
- 一、直接生成密鑰,然后進行加密,解密,
- 二、先生成密鑰,然后將密鑰寫入文件保留下來,然后再讀出來使用
- 三、直接生成密鑰,然后將密鑰寫成字符串,放在代碼中,直接使用
上述三種,其實從邏輯上講,都應該是支持的,如果不支持,那么就應該是過程中某個地方的格式有問題。需要進行常規處理。
在使用過程中,有一個地方需要特別注意,就是需要加密的字符串要進行encoding,在解密是需要進行decode。不要忘記這一點。否則你會發現加密時就會報錯。
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 = '今天的天氣有點熱,但整體還是很好'
? ? 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()
原文鏈接:https://blog.csdn.net/qq_44862918/article/details/124097875
相關推薦
- 2022-07-28 C++實例講解引用的使用_C 語言
- 2023-11-13 linux平臺下ZeroMQ zmq(C++)編譯安裝以及調用
- 2022-04-20 python數據類型中的字符串你了解多少_python
- 2022-01-18 npm ERR! code ENOENT npm ERR! syscall open npm ERR
- 2022-04-21 C++實現MyString的示例代碼_C 語言
- 2023-02-27 C語言中互斥鎖與自旋鎖及原子操作使用淺析_C 語言
- 2024-02-28 UNI-APP,text、rich-text控件顯示字符串,當字符串過長時,實現自動換行
- 2022-06-25 JQuery獲取對象的方式介紹_jquery
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支