Go工程師體系課 005

微服務開發

創建一個微服務項目,所有的項目微服務都在這個項目中進行,創建joyshop_srv,我們無創建用戶登錄註冊服務,所以我們在項目目錄下再創建一個目錄
user_srvuser_srv/global(全局的對象新建和初始化)
user_srv/handler(業務邏輯代碼)
user_srv/model(用戶相關的 model)
user_srv/proto(用戶相關的 model)
main.go 服務啓動文件

密碼我們採用 md5 加密

1. Message Digest Algorithm 5(MD5)信息摘要算法

MD5 是一種常見的哈希算法,其主要特性如下:

  1. 壓縮性
    任意長度的數據,計算出的 MD5 值長度都是固定的。

  2. 容易計算
    從原始數據計算出 MD5 值非常容易。

  3. 抗修改性
    對原數據進行任何修改,哪怕只是一個字節,所產生的 MD5 值差異都很大。

  4. 強碰撞性
    想找到兩個不同的數據,使它們具有相同的 MD5 值,非常困難。

  5. 不可逆性
    不可反解,無法通過 MD5 值還原出原始數據。

MD5 鹽值加密

1. 加鹽的目的

為了增強 MD5 加密的安全性,防止彩虹表攻擊,通常會給原始數據添加 "salt"(鹽值)再進行 MD5 加密。

2. 加鹽方法

  1. 通過生成隨機數和 MD5 生成字符串進行組合

  2. 將隨機生成的 salt 值與原始密碼進行拼接後再進行 MD5 加密。

  3. 如:md5( password + salt )

  4. 數據庫同時存儲 MD5 值和 salt 值

  5. 在註冊時:生成 salt、計算加鹽後的 MD5,一並存入數據庫。
  6. 在驗證時:取出 salt,重新加密對比 MD5 值即可。
// 設置加密參數
options := &password.Options{
 SaltLen:      16,
 Iterations:   100,
 KeyLen:       32,
 HashFunction: sha512.New,
}

// 1. 加密
salt, encodedPwd := password.Encode("your_password", options)
final := fmt.Sprintf("$pbkdf2-sha512$%s$%s", salt, encodedPwd)

// 2. 拆分(模擬從數據庫讀取)
parts := strings.Split(final, "$")
saltFromDb := parts[2]
hashFromDb := parts[3]

// 3. 驗證
ok := password.Verify("your_password", saltFromDb, hashFromDb, options)
fmt.Println("驗證是否通過:", ok)

主題測試文章,只做測試使用。發佈者:Walker,轉轉請注明出處:https://walker-learn.xyz/archives/6771

(0)
Walker的頭像Walker
上一篇 2026年3月6日 01:00
下一篇 2026年3月10日 10:00

相關推薦

  • Go工程師體系課 003

    grpc grpc grpc-go grpc 無縫集成了 protobuf protobuf 習慣用 Json、XML 數據存儲格式的你們,相信大多都沒聽過 Protocol Buffer。 Protocol Buffer 其實是 Google 出品的一種輕量 & 高效的結構化數據存儲格式,性能比 Json、XML 真的強!太!多! protobuf…

    後端開發 2026年3月6日
    11500
  • Go日積月累 電子書目錄與推薦

    Go 語言電子書精華整理與推薦 基於 48 份 Go 語言電子書資料,按主題提煉為 4 篇系統化精華文檔。整理時間:2026-03-06 精華文章導讀 以下 4 篇文章從 48 份電子書中提煉核心知識,按主題系統化整理,覆蓋 Go 語言從底層原理到企業實戰的完整知識體系。 1. Go 底層原理與源碼精華 知識來源:《Go 源碼剖析》(雨痕)、《Go 1.4 …

    後端開發 2026年3月6日
    16400
  • 編程基礎 0002_名庫講解

    名庫講解 goconfig go 語言針對 windows 下常見的 ini 格式的配置文件解析器,該解析器在涵蓋了所有 ini 文件操作的基礎上,又針對 go 語言實際開發過程中遇到的一些需求進行了擴展。該解析器最大的優勢在於對注釋的極佳支持,除此之外,支持多個配置文件覆蓋加載也是非常特別但好用的功能。 提供與 windows api 一模一樣的操作 支持…

    2026年3月6日
    10600
  • Go工程師體系課 018

    API 網關與持續部署入門(Kong & Jenkins) 對應資料目錄《第 2 章 Jenkins 入門》《第 3 章 通過 Jenkins 部署服務》,整理 Kong 與 Jenkins 在企業級持續交付中的實戰路徑。即便零基礎,也能順著步驟搭建出自己的網關 + 持續部署流水線。 課前導覽:甚麼是 API 網關 API 網關位於客戶端與後端微服務…

    後端開發 2026年3月6日
    13600
  • Go工程師體系課 008

    訂單及購物車 先從庫存服務中將 srv 的服務代碼框架複製過來,查找替換對應的名稱(order_srv) 加密技術基礎 對稱加密(Symmetric Encryption) 原理: 使用同一個密鑰進行加密和解密 就像一把鑰匙,既能鎖門也能開門 加密速度快,適合大量數據傳輸 使用場景: 本地文件加密 數據庫內容加密 大量數據傳輸時的內容加密 內部系統間的快速通…

    後端開發 2026年3月7日
    10900
簡體中文 繁體中文 English