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.
44 lines
830 B
44 lines
830 B
package secure
|
|
|
|
import (
|
|
"encoding/base64"
|
|
jsoniter "github.com/json-iterator/go"
|
|
"github.com/nanjishidu/gomini/gocrypto"
|
|
)
|
|
|
|
type NetPackage struct {
|
|
Body string `json:"body"`
|
|
Key string `json:"key"`
|
|
}
|
|
|
|
func Decrypt(text []byte) ([]byte, error) {
|
|
np := NetPackage{}
|
|
err := jsoniter.Unmarshal(text, &np)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
originalKey, _ := base64.StdEncoding.DecodeString(np.Key)
|
|
key, err := gocrypto.RSADecrypt(originalKey, "credentials/app/server_rsa_private_key.pem")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
err = gocrypto.SetAesKey(string(key))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
originalBody, err := base64.StdEncoding.DecodeString(np.Body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
body, err := gocrypto.AesECBDecrypt(originalBody)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return body, nil
|
|
}
|