天天看點

【編碼和加密】BASE64--ASCII--HASHBase64 加密特征HASH(散列函數)ASCII 編碼

常見 編碼/加密 算法

  • Base64 加密特征
  • HASH(散列函數)
    • MD5
      • 計算過程
    • SHA-1
    • SHA-2
  • ASCII 編碼

Base64 加密特征

  1. 每三個位元組變成四個位元組
    位元組數/3 餘1,在最後添加

    ==

    。例如

    %

    的bash64 編碼為

    JQ==

    位元組數/3 餘2,在最後添加

    =

    。例如

    %

    的bash64 編碼為

    YWI=

  2. 每76個字元加一個換行符
  3. 最後的結束符也要處理

舉個例子

example

轉換為二進制之後(利用ASCII 轉換的)

01100101 01111000 01100001 01101101 01110000 01101100 01100101
           

example

長度為7,不是3 的倍數,缺少兩個位元組,要在最後加上兩個位元組的 0,也就是16位0

01100101 01111000 01100001 01101101 01110000 01101100 01100101 00000000 00000000
           

然後我們将其按照6位1字元排好

011001 010111 100001 100001 011011 010111 000001 101100 011001 010000 000000 000000
           

每6位前面 填充00之後得到

00011001 00010111 00100001 00100001 00011011 00010111 00000001 00101100 00011001 00010000 00000000 00000000
           

轉換為 十進制

25 23 33 33 27 23 1 44 25 16 0 0
           

對照表用字元替換之後得到

ZXhhbXBsZQAA
           

,由于最後兩位是自動補充上去的,再将最後的AA換成==即可

ZXhhbXBsZQ==
           

HASH(散列函數)

把任意長度的輸入通過雜湊演算法變換成固定長度的輸出,該輸出就是散列值。

這種轉換是一種壓縮映射,也就是,散列值的空間遠小于輸入的空間,不同的輸入可能會散裂成相同的輸出,是以不可能從散列值來确定唯一的輸入值。

作用:安全地存儲密碼,查找重複記錄,快速存儲和檢索資料

MD5

消息摘要算法版本5:它是一種 Hash 算法。将任意長度的資料映射為128bit的資料。可用于完整性校驗

MD5的輸出可以是16位,也可以是32位。其中16位是 32位的

str.substring(8, 24)

(第9到24位)

特點:

  • 不可逆
  • 唯一性

計算過程

  1. 資料填充。将資料填充為512的倍數
  2. 循環計算,将第一個分組 經計算得出的md5值,用作下一個分組的狀态輸入

SHA-1

将任意長度消息生成固定長度為 160bit 的資料,目前SHA-1已經被破解

SHA-2

也是一種 HASH 算法,但是輸出的散列值 根據 不同的分類,輸出的固定長度會不一樣

SHA-2的分類:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

應用:

  • 目前數字簽名中的 SSL 算法中使用的就是 SHA-2 算法
  • 比特币

ASCII 編碼

是基于拉丁字母的一套電腦編碼系統

任何字元要通過計算機通信,都要先轉化為ASCII碼,然後再轉為二進制。如果需要base64編碼,那麼接下來就是Base64編碼的流程了

ascii編碼對照表

繼續閱讀