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