在做爬蟲資料抓取的很多時候post請求引數中重要的資料都是經過js的加密,js中常常加密的js函式有以下幾種:
普及一下各種加密演算法base64編碼(基礎)
單項雜湊函式 md5、sha1、sha256、sha512等
訊息認證碼 hmac-md5、hmac-sha1
對稱加密 des|3des|aes(高階加密標準)
非對稱加密 rsa
數字簽名
證書
base64理論上這個不可以稱為加密,只是將文字按照一定的編碼格式重新寫一遍罷了,但是可以起到一定的加密作用。pyhon**實現:
# 加密
import base64
def encode64(data):
# 注意 轉碼的型別必須是bytes,如果是str型別需要進行encode
return base64.b64encode(data.encode("utf-8"))
# 解密
def decode64(data):
return base64.b64decode(data)
data = "abcd"
encode = encode64(data)
print("加密結果為:",encode)
print("解密結果為:",decode64(data))
執行完成之後的結果是:
加密結果為: b'ywjjza=='
解密結果為: b'i\xb7\x1d'
rsa非對稱加密-安裝庫:cryptodome (pip3 install pycryptodome)之前的crypto已經沒有更新維護由 rsa 公司發明,是乙個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的非對稱加密系統, 又稱公鑰金鑰加密。 非對稱加密為資料的加密與解密提供了一種非常安全的方式。使用了一對金鑰, 私鑰和公鑰。 私鑰只能有一方安全保管(伺服器), 不能外洩, 而公鑰可以發給任何請求的人。非對稱加密使用這對金鑰中的乙個進行加密, 而解密卻需要乙個另外乙個金鑰。 目前最常用的非對稱加密演算法是rsa演算法。公鑰機制靈活,但加密和解密速度卻比對稱金鑰(aes)加密慢得多。 公鑰機制靈活, 但是加密和解密速度卻要比堆成加密慢很多。
python**實現為:
from crypto.cipher import pkcs1_v1_5 as cipher
from crypto.publickey import rsa
#獲取公鑰
def get_public_key():
url = "「
rsp = requests.get(url, verify=false)
public = rsp.json()['data']
key = """-----begin rsa private key-----\n{}\n-----end rsa private key-----""".format(
public)
return key
def encrypt(publice,string):
""" 傳入公鑰以及需要解密的string"""
publice_key = rsa.importkey(public,string)
cipher = cipher.new(publice_key)
cipher_text = base64.b64encode(cipher.encrypt(bytes(string, encoding="utf-8")))
cipher_text = cipher_text.decode('utf-8')
return cipher_text
常見加解密
簡介 常見的對資料進行加密,解密演算法分為以下幾類 1 單向加密演算法 2 對稱加密演算法 3 非對稱加密演算法 一.單向加密演算法 這種演算法,只能加密,不能解密,是不可逆的,所以叫做單向加密演算法 摘要演算法 這種演算法通常被用作對資料簽名 1.md5 摘要演算法是乙個不可逆過程,無論多大資料,...
常見加解密方法 轉
常用加密解密方法 常見用於保證安全的加密或編碼演算法如下 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 des data encryption standard 資料加密標準,速度較快,適用於加密大量資料的場合 3des triple des 是基於des,對一塊資料用三...
常見加密方法解析 python加解密應用
加密就是把明文通過處理變成密文 解密就是把密文解析成明文 加密的操作物件是 位元組碼,也就是bytes型別 所以對字串進行加密時,必須先將 str 轉換成 bytes 型別 轉換方法 encode 將 str 轉換成 bytes decode 將 bytes 轉換成 str計算機的儲存單位 byte...