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 }