package util import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "errors" "io/ioutil" "os" ) var ( PrvKey []byte PubKey []byte ) func init() { PrvKey = []byte("-----BEGIN RSA PRIVATE KEY-----\nMIIJKgIBAAKCAgEAz6Wxud0eXilYEkzL6UhFirWQViRo8XuFvrWjqlycNnanhG7Q\nrfwlofT8Dc6jdBAQSQkIbizHupigDS684HjZXDY63PqxlS5BECvx4pnTe2Az7vsY\nTc/lr0hTSMgu7BEXmsbtHoxNHVMkOz7epQJ91RcwsRl78sNoEd8eXkbxelsdYbxv\ngmV87KMgX1yA4DU2DGxfd+xU9aVk5uz8XzN3UE+pHpiJhZL5yR47W+gw4mY3haBn\nLSxJcVgAyTB2tKmHw+6fZrXmFd39LXl58jSmMvv/Wb906UgaSzS06OuGsYQoOw91\n1c8yPO2eVM/HMb/qJXCEeEF1DN5xheunLWfFOrE9nQRiHoP8GO6PduzQgq7zHRZw\nE5OuqVuRJafyWkIpuN1PDn8dpBxhuWv5vtSvfmRuDHAboEDT42Ud6WCP4yprWjhb\nxKi436nXP3fPoGpfrE7f2CtfljyV7qFOjJNdHlh8Ga9UGRAJvvzZPR/dG+UwWHyV\n2X6Xk2vFcQJ538tj5jpUyqxR53nqCbFIE91vJ3/UfgS3f1D+czHhU6uLuKKbg9pS\nPI2scJguxAokTnLjXXA+AyYPyApszBciBwKZ6D2r0LvmgCmkTsYGMsK9Y9OhSAJ6\nm8SkZF7u7W+qLMN3SDT0Kp7RySLhi2VoKHkkvq2RFi2B/fPbScMeOHG/6O8CAwEA\nAQKCAgEAtPW3rzzOrEznnfsjccg0IrAce5X7hweZBRyS53MSCDzbvIQ+hIHL4hr4\nVqgQtqMRLjUbDbkkzq8YPKTQoedvtfbk0ZQAkvveY9OIV2yra0fpuolFIvrdNiaX\nvkQG8F/s7EwUdZzbz4SXfLJLog5LzxsIqi6FYIl+9qQ1eP/mjjU9o+FuZHtBpZB8\nM98PyVVWJvmDMaXaXMGo7770KZtWjbz+q9VPdAMkgGtCW9Q8VfGyzVd+01VXI9oH\nxU3hBY0A7nXUoNRBEimF7M2CwtuzQ5dtb690maDmmUfzqVEo7yc3UFEm5hBNvd9v\nLoZtGCQiUEKAj7Sr520sDgPSi7V1oSDYMKqmJ/GKVizAZZdpsdfZOKvu7T04ZbGC\nZmSeIYePgE+j9iMW6ixMSlCsPjDjCIirQDEJIQN01q5tx7hwouJaWwU4x+xi61LG\nH29njiUI4fZm/VgD6pso6fsNdeuVVXW1ghmoTWQpHgN8EH+qaJpqj34yB3HuveWs\nV3HX9SSKN4IIOvWiDGLpEEgipkVBxp0KHIe8EWWAP8K4fyz7no38juIF3sjPlZjI\ngL/FrXMtvgcZjCFb7+bhfDlqG8FpZ/Cd66nW9a1EuwVse4R9Hn3hW6LDvGsILKJY\n5UuJH3VG8TxrH+ZwnEIx1vNBVoPvzu6x7o8Eec92uOmhdD5pgEECggEBAOjWeCTn\nywP19FGNViRQaMdEADUmN45tGSF4ECAS5lUZ0p69XmjhNAH1coj17sk7ob6ZUtOB\nnIUX1CKY59d6xeq7TiWB6SncypYyN5qnY7gPVX+g7DmUWh6rNKKQ/1BSvMG70GhT\nYguizjkoL8IsSO5dkFHfBPfstPq1z1b1IIIGfVS34AM3DQnLG3lUYR36iwO+b1zt\n1zlRo0TmitKTGN0nN1i4bXSaHvJmmOPdIb3Yibsq+kiHv2ywfPQ21pOnHYsZPEDM\nCMc+tNhdNHbpbjGYcKZ6N3VDxAOuFqliZ0pQjw4aNvSS7VHvBHgnJeKgQuBNhIgS\nowRCfn8sDhoZOrECggEBAORNtr+7EwUFPSc/asAYSU1xz6ClqPCjqsV1yWZA59Ig\nx7la4TUvlgkg2Lw9pd7bh8FKTxN01FpqluDkzymuLXhbGiQQVGdjBIeTjtO0QY17\noh+uIwAIajm+tKJq0qI4ZDX3Ow3sgREMfNUb/Xkb8KRafMD9Gs7gOf6Xiac33zmX\nFlm2tkyj5yLruEYMiYCkD6Ot4eVvILQCT2o0NjeUSUY709BwwbzcXBAOUW1EJerO\nYfrEONJOt8Cg1jycC4voV5DnBkurVdRA5jKnQkv38puABJEjGOEMYRdpbpPxUm3/\nYnVsgKJYcwIgVvGXa5MlOP7zUBfl/PFw75+7a2qfBZ8CggEBAM0mqxVZZndG7s4s\nSgoVDz0DnWs3ERxc5BepQgwAmxHAfuN+1wBx7PEM4q3qg0qrUAgv79qMCOz74d3Z\n++zQMDJydph1rotEDvvnozaQ5jv2xs59a6YQIJeFIgta1ppfTBEm+qnxTiISgMG7\nttjPTDM6HT8F0crgtVVxfA6STOJD9Yn/uVEb4FEQtFRjFG7lojbaRCUNKuVGGSVM\nPGTtVqsFMq7pUQe8BChwXaXn4SL09+YCKCRf9zo9BtvmtYnDZTR6N6ygGdv0VEOP\nW/qqEn2AY0FLzjF0U/EqIq18FqZT9LfoQSOdkZzvjHCRjb/wlPwtUOjUAu5t6CcF\nGifEswECggEASu9zJ3V45bH1g5deK5UNIl1T4A/f5rRhzhQ+OdDeBmt6As3gk7t9\nzJs6aHb3pbF62qfQUruLI+5OfZy8npqsFBAbAXFWsuSeTP3S6IwG5DCLY0id9lnM\nvA1rbtAPOO23frsaaBSTvIvTwYNBbGoOT3Pf9Nxe2z5f6r/Ej91X6Kg9zs6ZAYje\nyeiDAIMG8vFmrLvbJJqYKl2DwYFHtnB2qJXkjUslXB8cHK0Gbw3qQCrjoBKd7/Gk\ngJaKGzTA2Xg2nbomp9mh/1wZ8tBRg2vr9rxLQ3Q4q02L5MpXYDnaa35iy9YEVsUf\nYrhIsV2ZEqAqGAy24lE79+ewz0YOGN3/UwKCAQEAs2CAW8B4Fwxq3/GlKXhTEdkI\nrEGkL1vfV6zQnTmFwRm+QbEihbQBbEwNG1id3wlfQ/hPMoNF2j598TLbmfYRaNGv\n2uFoAGczxbmVxkaVBvoSZIe3FKQuovak/Xq3Zy5fpOsEbQBGv6738k0Wgjec4R9y\n77l+Zh9AHeGJEviJNTaGFkf3YbJJnvfgb32GgVmSCLzDNinmTvM1Kkv7A4vwuM7X\nlxshmtMkLqs265otdt4OSQ63MGLZWHAbYTIVtVuJopeZF/ZdrXON+t4vTNV3GFXB\nYmlUfRhiCf3hknBP7oTBDP8AVXHYtN1vFhTYNPmLv0SoHVHCdi1TiN4PeLIc/g==\n-----END RSA PRIVATE KEY-----\n") PubKey = []byte("-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAz6Wxud0eXilYEkzL6UhF\nirWQViRo8XuFvrWjqlycNnanhG7QrfwlofT8Dc6jdBAQSQkIbizHupigDS684HjZ\nXDY63PqxlS5BECvx4pnTe2Az7vsYTc/lr0hTSMgu7BEXmsbtHoxNHVMkOz7epQJ9\n1RcwsRl78sNoEd8eXkbxelsdYbxvgmV87KMgX1yA4DU2DGxfd+xU9aVk5uz8XzN3\nUE+pHpiJhZL5yR47W+gw4mY3haBnLSxJcVgAyTB2tKmHw+6fZrXmFd39LXl58jSm\nMvv/Wb906UgaSzS06OuGsYQoOw911c8yPO2eVM/HMb/qJXCEeEF1DN5xheunLWfF\nOrE9nQRiHoP8GO6PduzQgq7zHRZwE5OuqVuRJafyWkIpuN1PDn8dpBxhuWv5vtSv\nfmRuDHAboEDT42Ud6WCP4yprWjhbxKi436nXP3fPoGpfrE7f2CtfljyV7qFOjJNd\nHlh8Ga9UGRAJvvzZPR/dG+UwWHyV2X6Xk2vFcQJ538tj5jpUyqxR53nqCbFIE91v\nJ3/UfgS3f1D+czHhU6uLuKKbg9pSPI2scJguxAokTnLjXXA+AyYPyApszBciBwKZ\n6D2r0LvmgCmkTsYGMsK9Y9OhSAJ6m8SkZF7u7W+qLMN3SDT0Kp7RySLhi2VoKHkk\nvq2RFi2B/fPbScMeOHG/6O8CAwEAAQ==\n-----END PUBLIC KEY-----\n") } func GetTextFromPemFile(path string) ([]byte, error) { f, err := os.Open(path) if nil != err { return []byte(""), err } defer f.Close() fd, err := ioutil.ReadAll(f) if nil != err { return []byte(""), err } return fd, nil } func RsaEncrypt(data []byte) ([]byte, error) { block, _ := pem.Decode(PubKey) if nil == block { return []byte(""), errors.New("public key error") } pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes) if nil != err { return []byte(""), err } pub := pubInterface.(*rsa.PublicKey) ciphertext, err := rsa.EncryptPKCS1v15(rand.Reader, pub, data) if err != nil { return []byte(""), err } return ciphertext, nil } func RsaDecrypt(ciphertext []byte) ([]byte, error) { block, _ := pem.Decode(PrvKey) if nil == block { return []byte(""), errors.New("privite key error") } priv, err := x509.ParsePKCS1PrivateKey(block.Bytes) if nil != err { return []byte(""), err } data, err := rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext) if err != nil { return []byte(""), err } return data, nil }