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
上一篇 13小时前
下一篇 1天前

相关推荐

  • Go工程师体系课 006

    项目结构说明:user-web 模块 user-web 是 joyshop_api 工程中的用户服务 Web 层模块,负责处理用户相关的 HTTP 请求、参数校验、业务路由以及调用后端接口等功能。以下是目录结构说明: user-web/ ├── api/ # 控制器层,定义业务接口处理逻辑 ├── config/ # 配置模块,包含系统配置结构体及读取逻辑 …

    后端开发 10小时前
    100
  • Go工程师体系课 009

    其它一些功能 个人中心 收藏 管理收货地址(增删改查) 留言 拷贝inventory_srv--> userop_srv 查询替换所有的inventory Elasticsearch 深度解析文档 1. 什么是Elasticsearch Elasticsearch是一个基于Apache Lucene构建的分布式、RESTful搜索和分析引擎,能够快速地…

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

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

    1天前
    400
  • 编程基础 0007_并发模式

    Go 并发模式 常见的 Go 并发设计模式,每个模式都有完整可运行示例和适用场景说明 1. Worker Pool 模式 固定数量的 worker goroutine 从共享的任务队列中取任务执行,控制并发度。 package main import ( "fmt" "sync" "time" ) …

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

    商品微服务 实体结构说明 本模块包含以下核心实体: 商品(Goods) 商品分类(Category) 品牌(Brands) 轮播图(Banner) 品牌分类(GoodsCategoryBrand) 1. 商品(Goods) 描述平台中实际展示和销售的商品信息。 字段说明 字段名 类型 说明 name String 商品名称,必填 brand Pointer …

    后端开发 9小时前
    100
简体中文 繁体中文 English