Browse Source

创建商品订单

kobe6258 5 months ago
parent
commit
1bd81f7b3c
3 changed files with 30 additions and 6 deletions
  1. 21 4
      common/utils/auth/rsa_utils.go
  2. 7 0
      middleware/auth_middleware.go
  3. 2 2
      middleware/webhook_middleware.go

+ 21 - 4
common/utils/auth/rsa_utils.go

@@ -23,11 +23,28 @@ func EncryptWithRSA(publicKey *rsa.PublicKey, data []byte) ([]byte, error) {
 // DecryptWithRSA 使用 RSA 私钥解密数据
 func DecryptWithRSA(privateKey *rsa.PrivateKey, encrypted string) ([]byte, error) {
 	encKey, _ := base64.StdEncoding.DecodeString(encrypted)
-	hash, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, encKey)
-	if err != nil {
-		return nil, err
+	blockSize := privateKey.Size()
+	maxChunkSize := blockSize
+	var plaintext []byte
+	for len(encKey) > 0 {
+		chunkSize := maxChunkSize
+		if len(encKey) < chunkSize {
+			chunkSize = len(encKey)
+		}
+
+		chunk := encKey[:chunkSize]
+		encKey = encKey[chunkSize:]
+		decryptedChunk, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, chunk)
+		if err != nil {
+			return nil, err
+		}
+		plaintext = append(plaintext, decryptedChunk...)
 	}
-	return hash, nil
+	//hash, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, encKey)
+	//if err != nil {
+	//	return nil, err
+	//}
+	return plaintext, nil
 }
 
 // ParsePrivateKeyFromPEM 解析RSA公钥

+ 7 - 0
middleware/auth_middleware.go

@@ -164,6 +164,13 @@ func unAuthorized() controllers.BaseResponse {
 		ErrMsg: exception.GetMsg(exception.Unauthorized),
 	}
 }
+func webhookSysErr(message string) controllers.BaseResponse {
+	return controllers.BaseResponse{
+		Ret:    401,
+		Msg:    message,
+		ErrMsg: exception.GetMsg(exception.SysError),
+	}
+}
 func webhookUnauthorized(message string) controllers.BaseResponse {
 	return controllers.BaseResponse{
 		Ret:    401,

+ 2 - 2
middleware/webhook_middleware.go

@@ -29,7 +29,7 @@ func WebHookAuthMiddleware() web.FilterFunc {
 
 		privateKey, err := auth.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
 		if err != nil {
-			rep := webhookUnauthorized("系统异常")
+			rep := webhookSysErr("系统异常")
 			logger.Error("解析私钥失败: %v", err)
 			_ = ctx.JSONResp(rep)
 			return
@@ -37,7 +37,7 @@ func WebHookAuthMiddleware() web.FilterFunc {
 		logger.Info("解码请求: %v", webhookRequest.Data)
 		decodeData, err := auth.DecryptWithRSA(privateKey, webhookRequest.Data)
 		if err != nil {
-			rep := webhookUnauthorized("解密请求体失败")
+			rep := webhookSysErr("解密请求体失败")
 			logger.Error("解密请求体失败: %v", err)
 			_ = ctx.JSONResp(rep)
 			return