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月8日 15:11
下一篇 2026年3月9日 12:56

相關推薦

  • Go工程師體系課 017

    限流、熔斷與降級入門(含 Sentinel 實戰) 結合課件第 3 章(3-1 ~ 3-9)的視頻要點,整理一套面向初學者的服務保護指南,幫助理解“爲什麼需要限流、熔斷和降級”,以及如何用 Sentinel 快速上手。 學習路線速覽 3-1 理解服務雪崩與限流、熔斷、降級的背景 3-2 Sentinel 與 Hystrix 對比,明確技術選型 3-3 Sen…

    後端開發 2026年3月6日
    6900
  • Go資深工程師講解(慕課) 008_GMP調度器與Go設計哲學

    Go GMP 調度器與設計哲學 對應視頻 9-2 go語言的調度器、18-1 體會Go語言的設計、18-2 課程總結 1. Go 調度器演進 1.0 時代:單線程調度器(Go 0.x) 只有一個線程運行 goroutine 所有 goroutine 排隊等待 無法利用多核 1.1 時代:多線程調度器(Go 1.0) 引入多線程 但全局鎖競爭嚴重,性能瓶頸 1…

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

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

    後端開發 2026年3月7日
    6400
  • Go工程師體系課 004

    需求分析 後臺管理系統 商品管理 商品列表 商品分類 品牌管理 品牌分類 訂單管理 訂單列表 用戶信息管理 用戶列表 用戶地址 用戶留言 輪播圖管理 電商系統 登錄頁面 首頁 商品搜索 商品分類導航 輪播圖展示 推薦商品展示 商品詳情頁 商品圖片展示 商品描述 商品規格選擇 加入購物車 購物車 商品列表 數量調整 刪除商品 結算功能 用戶中心 訂單中心 我的…

    2026年3月7日
    5400
  • 編程基礎 0011_Go併發與分佈式實戰精華

    Go 併發與分佈式實戰精華 參考:《Go 併發編程實戰》(郝林)、《Mastering Concurrency in Go》(Nathan Kozyra)、《Go 語言構建高併發分佈式系統實踐》 1. 併發原語深入 1.1 atomic 包 atomic 操作直接映射到 CPU 指令(如 LOCK CMPXCHG),比 mutex 快一個數量級。 impor…

    後端開發 2026年3月6日
    5700
簡體中文 繁體中文 English