zhou.xiaoning 2 роки тому
батько
коміт
3c4a8ccb0e
2 змінених файлів з 9 додано та 10 видалено
  1. 4 9
      models/account.go
  2. 5 1
      utils/encryptUtils.go

+ 4 - 9
models/account.go

@@ -7,7 +7,6 @@ import (
 	"mtp2_if/db"
 	"mtp2_if/global/e"
 	"mtp2_if/utils"
-	"regexp"
 	"strconv"
 	"time"
 )
@@ -706,9 +705,11 @@ func GetUserInfo(userID int) (*Userinfo, error) {
 		if s1, err := hex.DecodeString(userInfo.Mobile); err == nil { // hex -> []byte
 			if s2, err := utils.AESDecrypt(s1, key); err == nil {
 				// FIXME: - 临时操作 - 解决导入数据手机号码被加密两次的问题
-				if !phoneValid(string(s2)) {
-					if s3, err := utils.AESDecrypt(s2, key); err == nil {
+				if h, err := hex.DecodeString(string(s2)); err == nil {
+					if s3, err := utils.AESDecrypt(h, key); err == nil {
 						userInfo.Mobile2 = string(s3)
+					} else {
+						userInfo.Mobile2 = string(s2)
 					}
 				} else {
 					userInfo.Mobile2 = string(s2)
@@ -720,12 +721,6 @@ func GetUserInfo(userID int) (*Userinfo, error) {
 	return &userInfo, nil
 }
 
-func phoneValid(phone string) bool {
-	reg := `^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$`
-	rgx := regexp.MustCompile(reg)
-	return rgx.MatchString(phone)
-}
-
 // GetUserInfoByLoginID 通过登录账号获取用户信息的方法
 func GetUserInfoByLoginID(loginID int) (*Userinfo, error) {
 	engine := db.GetEngine()

+ 5 - 1
utils/encryptUtils.go

@@ -29,9 +29,13 @@ func AESEncrypt(plaintext, key []byte) ([]byte, error) {
 func AESDecrypt(crypted, key []byte) ([]byte, error) {
 	block, err := aes.NewCipher(key)
 	if err != nil {
-		return nil, errors.New("错误的数据或密钥")
+		return nil, errors.New("错误的密钥")
 	}
+
 	blockMode := NewECBDecrypter(block)
+	if len(crypted)%blockMode.BlockSize() != 0 {
+		return nil, errors.New("错误的数据")
+	}
 	origData := make([]byte, len(crypted))
 	blockMode.CryptBlocks(origData, crypted)
 	origData = PKCS5UnPadding(origData)