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.

83 lines
2.2 KiB

package tools
import (
"sync"
"github.com/farmerx/gorsa"
"github.com/gin-gonic/gin"
jsoniter "github.com/json-iterator/go"
)
var pubKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDta5dZMmrBSJHelR8/R9VIdJ1w
2oSZLoGKPrcvhGf/1MRUJC07f2b8m7OuqVmK4fpCXLMHOqAY+gOMkrdqSgBuAIkI
rxeb4/vN2v5zy1+azY5XMwZW8fgLuYvqsr7tAnFqe4BZj3qXOhNI+IBUosoLZe4o
mxPhFWhufdp5lsPMrwIDAQAB
-----END PUBLIC KEY-----
`
var privateKey = `-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAO1rl1kyasFIkd6V
Hz9H1Uh0nXDahJkugYo+ty+EZ//UxFQkLTt/Zvybs66pWYrh+kJcswc6oBj6A4yS
t2pKAG4AiQivF5vj+83a/nPLX5rNjlczBlbx+Au5i+qyvu0CcWp7gFmPepc6E0j4
gFSiygtl7iibE+EVaG592nmWw8yvAgMBAAECgYEA6YpWHEV9wZby9fHWBNdSM62S
WTp6CHw4rJY4d6NU8dCHNwVHASm3UnCOdRbcn8Ld+31YFZpTdX4pE5QWm5UjiSwu
wlYEs7VBrwlQKPFdEXQIrcHci6addeItbouHNynkA7kXCYCiulI2zYS1aXcJQuDm
5K5qCWekbk8IEMBGL7ECQQD46pu/NrU+xw0BT83LPCnrfGZp8baNe61OsMe95smG
Qm3rccdUBStXdtY7sDMeyuy0JjaL8F1c8xpCLdgjCQG9AkEA9C07TaXJ2OFX7icC
0pUEySer0krTapbEQNxLEYpRh4c5wr2nbmQSabP3TWFyuPfMLLX7ZNkImCZ0nY9j
cjmQ2wJARIaB3gA3oVK3F9dadkrX14Zlw2DRut2DdphgRL1WWWnMTPcDwvOxXODQ
VZpKWH3Q8D9c4OWJLl+WqQVp7Ss7mQJAUMGg6nZZgqRMu5QlZ9YnRgwb1KowsAD7
GWSCY2O2wTclEFY/SNBKErGVqf7/vVMfMO5jHaB2KjQVv4KL5lxJnwJAJCy7JqP1
DM3i6fWNpeV7KM7zNzdNWgNcisHN3AExewrfEOS3miziCT+fpPPjIADuUhMqNpvi
QsdhEJur0FtjhA==
-----END PRIVATE KEY-----
`
var once sync.Once
var json = jsoniter.ConfigCompatibleWithStandardLibrary
func init() {
once.Do(func() {
if err := gorsa.RSA.SetPublicKey(pubKey); err != nil {
panic(err)
}
if err := gorsa.RSA.SetPrivateKey(privateKey); err != nil {
panic(err)
}
})
}
type EncPacket struct {
Recook string `json:"recook"`
}
// PrivateKeyEncrypt 私钥加密
func PrivateKeyEncrypt(data interface{}) *gin.H {
bytes, err := json.Marshal(data)
if err != nil {
panic(err)
}
str, err := gorsa.RSA.PriKeyENCTYPT(bytes)
if err != nil {
panic(err)
}
return &gin.H{
"recook": string(str),
}
}
// PrivateKeyDecrypt 私钥解密
func PrivateKeyDecrypt(data []byte) interface{} {
decData, err := gorsa.RSA.PriKeyDECRYPT(data)
if err != nil {
panic(err)
}
var enc EncPacket
err = json.Unmarshal(decData, &enc)
if err != nil {
panic(err)
}
return &enc.Recook
}