成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Base64 編碼原來這么簡單,你知道嗎?

開發 前端
Base58Check 編碼,顧名思義是可以對 Base58 編碼進行檢查。比如我在傳輸 qH912cvztx編碼時,如果網絡異常等各種原因,導致數據錯亂或丟失,接收方要能夠識別出來數據有問題。

做了六七年程序員,經常用到 Base64 編碼,但對于為什么要用,以及它的原理,一直是不求甚解。最近在某本書上看到了 Base64 的編碼原理,原來這么這么這么簡單。

Base64 解決了什么問題

假如我們要在網絡中傳輸下面的問題:

你好  小朋友

我是磚家

你是誰?

這段文本中包含了空格、換行、回車等不可見字符,在網絡傳輸中,各個設備對不可見字符處理機制可能不同,會存在信息傳輸錯誤的情況。此時我們就需要一種編碼機制,把不可見字符統統轉成可見字符。

Base64 編碼原理

接下來我們通過將 abcd二字轉為 Base64 編碼,來了解下它的原理。

  • 把字符三三分組,不夠時通過 0 補齊。比如abc?三個字符歸一組,d? 不夠三位,通過0? 補齊為d00。

圖片

  • 把字符轉換成二進制 ASCII 編碼。

圖片

  • 把轉換后的二進制,每六位分隔開。

圖片

Q:為什么第一步需要分三個字符一組?


A:因為 ASCII 碼每個字符是 8 位二進制,3 * 8 = 24。正好可以被第三步拆分為 4 個 6 位二進制,4 * 6 = 24。

  • 6 位二進制能代表0-63,我們有一個彩虹表,可以將 0-63 分別對應一個字符,彩虹表如下:

圖片

通過彩虹表,我們可以將每 6 位分割后的二進制做一次轉換。

圖片

需要注意的是,凡是補位產生的 0,需要用 = 來表示。所以最后的兩位都是 =。

最后 abcd 轉換為 Base64 編碼后為 YWJjZA==,整體原理還是比較簡單的,不涉及到高深的算法。

Base64 周邊

  • 由于Base64? 轉碼后會包含+/=?字符,在 URL 不能正常傳輸。所以有一種 URL 友好型的 Base64 編碼,它存在使用_-?來代替+/?,并且不在末尾追加=。
  • Base32、Base16 的原理和 Base64 基本一致。
  • Base64 并不適合加密,因為解密太簡單了。
  • 漢字通過gb2312、utf-8、gbk?編碼后,即可轉成二進制處理。這里借用網上的一個圖片說明:

圖片

Base58 與 Base58Check

Base58 是比特幣在生成錢包地址時使用的一種編碼形式。它和 Base64 的主要區別是去掉了肉眼容易看錯的字符 0(零)、O(大寫字母 O)、I(大寫字母 i)、l(小寫字母 L)和幾個影響雙擊選擇的字符:/ 和 + 這種編碼的目的比較簡單,就是防止在轉賬時,看錯賬號,轉錯賬。Base58 的原理更簡單一些,只涉及到進制的轉換,大致步驟如下:

  • 將字符轉成 ASCII 碼
  • 將 ASCII 碼轉換成 58 進制
  • 通過彩虹表映射即可

比如 abcd轉換:

  • 轉成 ASCII 碼 97-98-99-100
  • 轉換成 58 進制 3-28-21-49-5-22
  • 通過如下彩虹表映射為 3VNr6P

圖片

Base58Check 編碼,顧名思義是可以對 Base58 編碼進行檢查。比如我在傳輸 qH912cvztx編碼時,如果網絡異常等各種原因,導致數據錯亂或丟失,接收方要能夠識別出來數據有問題。Base58Check 編碼基本原理如下:

  • 在 data 前面添加一個版本標識 prefix,用來識別編碼的數據類型,比如比特幣地址的前綴是 0(十六進制是 0x00)。
  • 通過 hash 算法計算prefix + data?的 hash 值:SHA256(prefix + data)。
  • 將生成的 hash 值截斷為前四位,拼接到后面prefix + data + 4 位 hash。
  • 將上一步生成的結果進行 Base58 編碼計算,得到最終結果。
責任編輯:武曉燕 來源: 前端技術磚家
相關推薦

2025-01-28 00:00:00

OpenFeign接口依賴

2019-12-30 09:51:35

Word設計模式軟件

2023-11-02 10:22:29

gRPC后端通信

2025-02-11 00:00:10

Base64編碼二進制

2014-02-20 10:28:28

JavaScriptBase64

2024-02-28 23:07:42

GolangBase64編碼

2024-07-11 08:42:57

2021-03-05 09:10:19

base64編碼

2024-07-31 10:22:49

Go語言編碼

2020-09-24 06:44:54

HTTPS網站 HTTP

2020-12-24 18:44:34

RSA加密算法

2023-11-07 08:35:26

2021-01-04 14:16:01

小程序地圖騰訊

2021-09-07 08:59:09

編碼Base64解碼

2021-04-19 05:42:51

Mmap文件系統

2023-04-26 10:21:04

2023-12-12 08:41:01

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2020-06-18 09:04:59

CC++程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久看 | 国精产品一品二品国精在线观看 | 日韩中文字幕免费在线 | 在线视频亚洲 | 91精品国产综合久久久久久漫画 | 一级日韩 | 久久久精品高清 | 免费国产一区 | 午夜寂寞网站 | 午夜资源| 中文字幕精品一区二区三区精品 | 国产高清在线 | 亚洲 日本 欧美 中文幕 | 黄色香蕉视频在线观看 | 国产99久久 | 99re在线观看 | h肉视频| 国产一区二区三区在线 | 成人免费高清 | 韩国成人在线视频 | 亚洲欧美视频一区 | 亚州毛片 | 免费黄视频网站 | 国产一级特黄aaa大片评分 | 久久久久精 | 日韩欧美在线不卡 | 欧美在线小视频 | 欧美在线a | 国产高清视频 | 99久久精品免费看国产四区 | 欧美精品久久久久 | 国产视频综合 | 中文字幕一区二区三区日韩精品 | 精品91久久| 久久精品久久久久久 | 蜜桃臀av一区二区三区 | 久久这里有精品 | 免费精品 | 亚洲成人自拍 | 精品亚洲一区二区三区四区五区 | 污片在线免费观看 |