103 lines
2.6 KiB
Go
103 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"tyc-server/pkg/lzkit/crypto"
|
|
|
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
|
)
|
|
|
|
const (
|
|
// 请替换为实际的数据库连接信息
|
|
dbHost = "tyc_mysql"
|
|
dbPort = "3306"
|
|
dbUser = "tyc"
|
|
dbPassword = "5vg67b3UNHu8"
|
|
dbName = "tyc"
|
|
// 请替换为实际的加密密钥
|
|
secretKey = "ff83609b2b24fc73196aac3d3dfb874f"
|
|
)
|
|
|
|
func main() {
|
|
// 连接数据库
|
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
|
dbUser, dbPassword, dbHost, dbPort, dbName)
|
|
db := sqlx.NewMysql(dsn)
|
|
|
|
// 加密user表的mobile字段
|
|
if err := encryptUserMobile(db); err != nil {
|
|
log.Fatalf("加密user表mobile字段失败: %v", err)
|
|
}
|
|
|
|
// 加密user_auth表的auth_key字段
|
|
if err := encryptUserAuthKey(db); err != nil {
|
|
log.Fatalf("加密user_auth表auth_key字段失败: %v", err)
|
|
}
|
|
|
|
fmt.Println("加密完成!")
|
|
}
|
|
|
|
func encryptUserMobile(db sqlx.SqlConn) error {
|
|
// 查询所有未加密的手机号
|
|
query := "SELECT id, mobile FROM user WHERE mobile IS NOT NULL AND mobile != ''"
|
|
var rows []struct {
|
|
ID int64 `db:"id"`
|
|
Mobile string `db:"mobile"`
|
|
}
|
|
if err := db.QueryRows(&rows, query); err != nil {
|
|
return fmt.Errorf("查询user表失败: %v", err)
|
|
}
|
|
|
|
// 准备更新语句
|
|
updateStmt := "UPDATE user SET mobile = ? WHERE id = ?"
|
|
|
|
// 处理每一行
|
|
for _, row := range rows {
|
|
// 加密手机号
|
|
encryptedMobile, err := crypto.EncryptMobile(row.Mobile, secretKey)
|
|
if err != nil {
|
|
return fmt.Errorf("加密手机号失败: %v", err)
|
|
}
|
|
|
|
// 更新数据库
|
|
if _, err := db.Exec(updateStmt, encryptedMobile, row.ID); err != nil {
|
|
return fmt.Errorf("更新user表失败: %v", err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func encryptUserAuthKey(db sqlx.SqlConn) error {
|
|
// 查询所有需要加密的auth_key
|
|
query := "SELECT id, auth_key FROM user_auth WHERE auth_type = 'app_mobile' AND auth_key IS NOT NULL AND auth_key != ''"
|
|
var rows []struct {
|
|
ID int64 `db:"id"`
|
|
AuthKey string `db:"auth_key"`
|
|
}
|
|
if err := db.QueryRows(&rows, query); err != nil {
|
|
return fmt.Errorf("查询user_auth表失败: %v", err)
|
|
}
|
|
|
|
// 准备更新语句
|
|
updateStmt := "UPDATE user_auth SET auth_key = ? WHERE id = ?"
|
|
|
|
// 处理每一行
|
|
for _, row := range rows {
|
|
// 加密auth_key
|
|
encryptedAuthKey, err := crypto.EncryptMobile(row.AuthKey, secretKey)
|
|
if err != nil {
|
|
return fmt.Errorf("加密auth_key失败: %v", err)
|
|
}
|
|
|
|
// 更新数据库
|
|
if _, err := db.Exec(updateStmt, encryptedAuthKey, row.ID); err != nil {
|
|
return fmt.Errorf("更新user_auth表失败: %v", err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|