You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.0 KiB
49 lines
1.0 KiB
package secure
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
jsoniter "github.com/json-iterator/go"
|
|
"github.com/nanjishidu/gomini/gocrypto"
|
|
"io/ioutil"
|
|
)
|
|
|
|
func FakeEcrypt() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
var NP = NetPackage{}
|
|
|
|
var key1 = "0000000000000000"
|
|
var requestBody, _ = ioutil.ReadAll(c.Request.Body)
|
|
b1, err := gocrypto.RSAEncrypt([]byte(key1), "credentials/app/server_rsa_public_key.pem")
|
|
if err != nil {
|
|
fmt.Println("pem读取错误:", err)
|
|
return
|
|
}
|
|
|
|
// 设置Key
|
|
NP.Key = base64.StdEncoding.EncodeToString([]byte(string(b1)))
|
|
|
|
err = gocrypto.SetAesKey(key1)
|
|
if err != nil {
|
|
fmt.Println("SetAesKey:", err)
|
|
return
|
|
}
|
|
|
|
// 设置加密body
|
|
ciphertext, _ := gocrypto.AesECBEncrypt(requestBody)
|
|
NP.Body = base64.StdEncoding.EncodeToString(ciphertext)
|
|
NpJson, err := jsoniter.Marshal(NP)
|
|
if err != nil {
|
|
fmt.Println("Json err:", err)
|
|
return
|
|
}
|
|
// 转为io.closer
|
|
b := ioutil.NopCloser(bytes.NewReader(NpJson))
|
|
c.Request.Body = b
|
|
c.Next()
|
|
}
|
|
|
|
}
|