4.加密函數編寫 加密算法分類: md5加密算法: RSA加密

加密算法分類:

  • md5系列加密 ,哈希算法類型
  • aes加密對稱加密,加密/解密是一個密鑰
  • rsa加密 非對稱加密,加密/解密使用一對公私鑰,安全係數相對高些
  • sm4加密 國密

md5加密算法:

  • 概述:md5沒有解密函數,解密原理是在庫裏面檢索的
  • 分類:
    1.簡單的md5加密,一般不在密碼加密使用,在輔助加密信息,如:簽名
    2.MD5加鹽(salt) pwd==12345, 123456+鹽值,不好破譯
    3.md5加雙層鹽:客戶端加一次,服務端加一次,即雙層鹽
import hashlib
def get_md5_data(data:str,salt=''):
"""
param data: 被加密的數據
param salt:鹽值 ,默認爲空
return:返回加密得到的16進制數據的密文
"""
  #1.創建md5實例
  md5=hashlib.md5()
  data=f'{data}{salt}'   # data= data+salt---要類型一致
  #2.調用加密函數
  md5.update(data.encode('utf-8'))# 轉爲統一編碼
  #3.返回加密的密文
  return md5.hexdigest() # 加密後的結果---16進制值
  

RSA加密

  • 概述: 非對稱加密:一對密鑰
  • 公鑰:客戶端拿到這個公鑰,使用對應的函數把明文數據,加密,公鑰可以公開
  • 私鑰;客戶端請求發過來密文,需要校驗,使用私鑰去解密,做判斷數據是否,匹配
  • 怎麼獲取公鑰?
    1.直接找開發要
    2.有些項目可以測試人員自己獲取
    瀏覽器打開項目---F12---控制檯---輸入publickey
  • 擴展: 公鑰加密,私鑰解密;私鑰簽名,公鑰驗籤
  • 加密:保證數據在網絡傳送中,就算被人抓包,不能直接看到具體的數據
  • 簽名:簽名,保證用戶的身份

RSA加密的代碼流程:

1、 安裝對應的庫: cmd --pip install pycryptodome
2、加密處理流程:

  • 先獲取/加密公鑰文件
  • 輸入需要加密的明文數據--加密函數一定需要一個形參(data)
  • 把輸入的字符串---byte str:'abc'---b'abc'
  • 使用加密方法加密
  • 使用base64編碼(對加密的密文進行編碼)
  • 解碼--密文是byte字節碼--dencode()---字符串

加密過程如下:

import pycryptodome
class RsaEncodecrypt:
  def __init__(self,file_path='./'):
    self.file_path = file_path
  def encrypt01(self,crypt_data):
    #1,先獲取/加密公鑰文件--公鑰數據
    with open(f'{self.file_path}public.pem','rb')as fo: # rb 以字節形式讀取
      # 2 .獲取公鑰的內容
      key_content_byte = fo.read()
      # 3,把輸入的明文密碼轉爲bytes類型
      crypt_data= crypt_data.encode('utf-8')
      #4,需要把公鑰的內容給對應的函數--RAS公鑰對象
      public_key =RSA.importKey(key_content_bytes)
      #5,使用公鑰對象,生成一個加密對象 cipher
      cipher =  PKCS1_cipher.new(public_key)
      # 6.調用加密方法encrypt(必須是bytes數據)
      encrypt_text = cipher.encrypt(crypt_data)
      #7.使用base64編碼--解碼--字符串
       return base64.b64encode(encrypt_text).decode('utf-8')

  """
項目--RSA加密接口
url = 'http://121.41.14.39:8082/account/loginRsa'
參數:
    username  賬號
    password: RSA加密的結果
        1- yuanyuabn通過md5加密成密文--a
        2- 使用RSA的公鑰加密(a)
    sign 簽名
        md5(username+password密文)
加密庫安裝:
    # pip install  pycryptodome -i https://douban.com/simplie
加密流程:
    1- 首先需要一個公鑰
"""
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher #重命名
import base64
class RSAendecrypt:
    def __init__(self,file_path='./'):
        self.file_path = file_path
    #1-創建密鑰對:公鑰  私鑰
    #2-加密操作
    def encrypt02(self,crypt_data):
        #1-打開讀取這個公鑰文件
        with open(self.file_path+'public.pem') as fo:
            key = fo.read()#2-讀取內容----字符串類型
            public_key = RSA.importKey(key)#RSA裏面importkey---變成公鑰
            cipher = PKCS1_cipher.new(public_key)#生成對象
            rsa_text = base64.b64encode(cipher.encrypt(bytes(crypt_data.encode('utf-8'))))#加密操作
            #需要解碼
            return rsa_text.decode('utf-8')
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章