天天看點

爬蟲常見加密解密算法以及js和python中的實作

作者:爬扒提吧

簡介

常見加密算法:

  1. 對稱加密(加密解密密鑰相同):DES、3DES、AES、RC4、Rabbit
  2. 非對稱加密(區分公鑰和私鑰):RSA、DSA、ECC
  3. 消息摘要算法/簽名算法:MD5、SHA、HMAC、PBKDF2
  4. 常見編碼算法:Base64

有的網站在加密的過程中可能還經過了其他處理,但是大緻的方法是一樣的。

JavaScript 加密解密子產品

Crypto-JS 支援 MD5、SHA、RIPEMD-160、HMAC、PBKDF2、AES、DES、3DES(Triple DES)、Rabbit、RC4 等,不支援 RSA、ECC,是應用比較廣的加密子產品,使用指令 npm install crypto-js 安裝。

Node-RSA 對 RSA 算法提供了支援,使用指令 npm install node-rsa 安裝。

JSEncrypt 對 RSA 算法提供了更加全面的支援,使用指令 npm install jsencrypt 安裝。

Python 加密解密庫

Cryptodome & Crypto

Crypto 已經停止更新好多年了,有很多未知錯誤,是以不建議安裝 Crypto !

Cryptodome 支援幾乎所有主流加密算法,包括 MD5、SHA、BLAKE2b、BLAKE2s、HMAC、PBKDF2、AES、DES、3DES(Triple DES)、ECC、RSA、RC4 等。

Cryptodome 使用指令 pip install pycryptodome 進行安裝,Crypto 使用指令 pip install pycrypto 進行安裝。

Hashlib

Python 的标準庫 hashlib 提供了常見的摘要算法,如 MD5,SHA、BLAKE2b、BLAKE2s 等。

HMAC

Python 的标準庫 hmac 對 HMAC 算法提供了支援。

pyDes

Python 的第三方庫 pyDes 對 DES 算法提供了支援。使用指令 pip install pydes 進行安裝

ESA

Python 的第三方庫 rsa 對 RSA 算法提供了支援。使用指令 pip install rsa 進行安裝

Base64

簡介:Base64 是一種用 64 個字元來表示任意二進制資料的方法。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python 實作

爬蟲常見加密解密算法以及js和python中的實作

MD5

全稱 MD5 消息摘要算法(英文名稱:MD5 Message-Digest Algorithm),又稱雜湊演算法、雜湊演算法,由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,于 1992 年作為 RFC 1321 被公布,用以取代 MD4 算法。摘要算法是單向加密的,也就是說明文通過摘要算法加密之後,是不能解密的。摘要算法的第二個特點密文是固定長度的,它通過一個函數,把任意長度的資料轉換為一個長度固定的資料串(通常用16進制的字元串表示)。之是以叫摘要算法,它的算法就是提取明文重要的特征。是以,兩個不同的明文,使用了摘要算法之後,有可能他們的密文是一樣的,不過這個機率非常的低。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

PBKDF2

Password-Based Key Derivation Function 2,PBKDF2 是 RSA 實驗室的公鑰加密标準(PKCS)系列的一部分,2017 年釋出的 RFC 8018 (PKCS #5 v2.1)推薦使用 PBKDF2 進行密碼散列。PBKDF2 将僞随機函數(例如 HMAC),把明文和一個鹽值(salt)作為輸入參數,然後進行重複運算,并最終産生密鑰,如果重複的次數足夠大,破解的成本就會變得很高。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

SHA

全稱安全雜湊演算法(英文名稱:Secure Hash Algorithm),由美國國家安全局(NSA)所設計,主要适用于數字簽名标準(Digital Signature Standard DSS)裡面定義的數字簽名算法(Digital Signature Algorithm DSA),SHA 通常指 SHA 家族的五個算法,分别是 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,後四者有時并稱為 SHA-2,SHA 是比 MD5 更安全一點的摘要算法,MD5 的密文是 32 位,而 SHA-1 是 40 位,版本越強,密文越長,代價是速度越慢。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

HMAC

全稱散列消息認證碼、密鑰相關的哈希運算消息認證碼(英文名稱:Hash-based Message Authentication Code 或者 Keyed-hash Message Authentication Code),于 1996 年提出,1997 年作為 RFC 2104 被公布,HMAC 加密算法是一種安全的基于加密 Hash 函數和共享密鑰的消息認證協定,它要求通信雙方共享密鑰 key、約定算法、對封包進行 Hash 運算,形成固定長度的認證碼。通信雙方通過認證碼的校驗來确定封包的合法性。

js實作(京東h5體驗過)

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

DES

全稱資料加密标準(英文名稱:Data Encryption Standard),加密與解密使用同一密鑰,屬于對稱加密算法,1977 年被美國聯邦政府的國家标準局确定為聯邦資料處理标準(FIPS),DES 是一個分組加密算法,使用 56 位的密鑰(一般認為密鑰是 64 位,但是密鑰的每個第 8 位設定為奇偶校驗位,是以實際上有效位隻有 56 位),由于 56 位密鑰長度相對較短,是以 DES 是不安全的,現在基本上已被更進階的加密标準 AES 取代。

  • mode 支援:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
  • padding 支援:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

AES

全稱進階加密标準(英文名稱:Advanced Encryption Standard),在密碼學中又稱 Rijndael 加密法,由美國國家标準與技術研究院 (NIST)于 2001 年釋出,并在 2002 年成為有效的标準,是美國聯邦政府采用的一種區塊加密标準。這個标準用來替代原先的 DES,已經被多方分析且廣為全世界所使用,它本身隻有一個密鑰,即用來實作加密,也用于解密。

  • mode 支援:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
  • padding 支援:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

RSA

英文名稱:Rivest-Shamir-Adleman,是 1977 年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的,RSA 就是他們三人姓氏開頭字母拼在一起組成的,RSA 加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業中RSA被廣泛使用。它被普遍認為是目前比較優秀的公鑰方案之一。RSA是第一個能同時用于加密和數字簽名的算法,它能夠抵抗到目前為止已知的所有密碼攻擊。

js實作

爬蟲常見加密解密算法以及js和python中的實作

python實作

爬蟲常見加密解密算法以及js和python中的實作

當然也可以用Cryptodome來實作。

内容總結大部分來源于網絡,并非原創。隻是現在用的多了,多練練,增加點熟悉感!