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 }