温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go怎么对int类型的数据加密

发布时间:2022-03-19 10:32:57 来源:亿速云 阅读:179 作者:iii 栏目:大数据

本篇内容主要讲解“Go怎么对int类型的数据加密”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go怎么对int类型的数据加密”吧!

问题

为什么要对 int 类型的数据加密,它的应用场景是什么?

比如:有一个商品详情界面 URL 为 /product/1001,这种情况很容易被别人猜测,比如输入 /product/1002/product/1003 尝试着去查看详情,这样的话信息就暴露了,如果别人想抓数据的话,只需要将后面的 ID 递增抓取就可以了,怎么解决这个问题?

比如:有一个用户邀请码需求,用户可以将自己的邀请码分享出去,当新用户使用这个邀请码注册的时候,就会给邀请者和被邀请者双方发奖励,通过 URL /user/1001 注册的,表示用户ID为 1001 的邀请的,这样用户ID很容易被修改,怎么解决这个问题? 

分析

上面的两个场景都是需要对 int 类型的数据进行加密,避免 ID 泄露。

需要满足以下特性:

  • 支持自定义 salt,保证加密后的是独一无二。
  • 支持加密和解密。
  • 支持多语言。

解决方案

先说结果:我将 1001 加密成 1oEpdkEzWA,1002 加密成 NnlzvxEORb。

具体实现看如下代码。

首先:import "github.com/speps/go-hashids"

// 加密func Encrypt(salt string, minLength int, params []int) string {	hd := hashids.NewData()	hd.Salt = salt	hd.MinLength = minLength	h, err := hashids.NewWithData(hd)	if err == nil {		e, err := h.Encode(params)		if err == nil {			return e		}	}	return ""}
// 解密func Decrypt(salt string, minLength int, hash string) []int { hd := hashids.NewData() hd.Salt = salt hd.MinLength = minLength h, err := hashids.NewWithData(hd) if err == nil { e, err := h.DecodeWithError(hash) if err == nil { return e } } return []int{}}

到此,相信大家对“Go怎么对int类型的数据加密”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI