通过字符串生成手机号

作者:
淡白
创建时间:
Apr 18, 2023, 12:12:42 PM
Go 奇技淫巧 解决办法 golang 118

摘要:用户信息中没有手机号,通过用户名的哈希来生成一个手机号。 用go代码实现分配虚拟手机号的demo

用户信息中没有手机号,通过用户名的哈希来生成一个手机号。

package main

import (
	"crypto/md5"
	"fmt"
	"math/big"
)

func main() {
	// 假设用户名为"john"
	username := "john"

	// 生成一个128位的MD5哈希值
	hash := md5.Sum([]byte(username))

	// 将哈希值转换为一个大整数
	num := new(big.Int)
	num.SetBytes(hash[:])

	// 取前9位数字作为手机号码
	mobile := num.Mod(num, big.NewInt(1e9)).String()

	// 在手机号码前面添加"13"-"19"中的一个数字
	mobile = "1" + string("3456789"[num.Mod(num, big.NewInt(7)).Uint64()]) + mobile

	fmt.Println("Username:", username)
	fmt.Println("Mobile:", mobile)
}