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/6751

(0)
Walker的头像Walker
上一篇 11小时前
下一篇 13小时前

相关推荐

  • Go工程师体系课 013

    订单事务 先扣库存 后扣库存 都会对库存和订单都会有影响, 所以要使用分布式事务 业务(下单不对付)业务问题 支付成功再扣减(下单了,支付时没库存了) 订单扣减,不支付(订单超时归还)【常用方式】 事务和分布式事务 1. 什么是事务? 事务(Transaction)是数据库管理系统中的一个重要概念,它是一组数据库操作的集合,这些操作要么全部成功执行,要么全部…

    后端开发 4小时前
    400
  • Go工程师体系课 008

    订单及购物车 先从库存服务中将 srv 的服务代码框架复制过来,查找替换对应的名称(order_srv) 加密技术基础 对称加密(Symmetric Encryption) 原理: 使用同一个密钥进行加密和解密 就像一把钥匙,既能锁门也能开门 加密速度快,适合大量数据传输 使用场景: 本地文件加密 数据库内容加密 大量数据传输时的内容加密 内部系统间的快速通…

  • 编程基础 0011_Go并发与分布式实战精华

    Go 并发与分布式实战精华 参考:《Go 并发编程实战》(郝林)、《Mastering Concurrency in Go》(Nathan Kozyra)、《Go 语言构建高并发分布式系统实践》 1. 并发原语深入 1.1 atomic 包 atomic 操作直接映射到 CPU 指令(如 LOCK CMPXCHG),比 mutex 快一个数量级。 impor…

    后端开发 21小时前
    400
  • Go工程师体系课 004

    需求分析 后台管理系统 商品管理 商品列表 商品分类 品牌管理 品牌分类 订单管理 订单列表 用户信息管理 用户列表 用户地址 用户留言 轮播图管理 电商系统 登录页面 首页 商品搜索 商品分类导航 轮播图展示 推荐商品展示 商品详情页 商品图片展示 商品描述 商品规格选择 加入购物车 购物车 商品列表 数量调整 删除商品 结算功能 用户中心 订单中心 我的…

    1天前
    400
  • 编程基础 0003_Web_beego开发

    Web 开发之 Beego 使用 go get 安装 bee 工具与 beego Bee Beego 使用 bee 工具初始化 Beego 项目 在$GOPATH/src 目录下执行 bee create myapp 使用 bee 工具热编译 Beego 项目 在$GOPATH/src/myapp 目录下执行 bee start myapp // hello…

    后端开发 17小时前
    500
简体中文 繁体中文 English