From 34f85ad14b12838116451b5bdaefdd088504fdd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B0=E4=BA=AE?= Date: Sat, 26 Dec 2020 13:52:34 +0800 Subject: [PATCH] upgrade --- configs/fat_configs.toml | 43 ++++++++++++++ internal/api/controller/demo/demo.go | 81 +++++++++++++++++++++++++ internal/api/controller/test/test.go | 57 ------------------ internal/api/router/router.go | 17 ++---- internal/pkg/configs/configs.go | 12 +++- internal/pkg/core/context.go | 7 +-- internal/pkg/core/core.go | 15 +++-- pkg/aes/aes.go | 80 +++++++++++++++++++++++++ pkg/md5/md5.go | 28 +++++++++ pkg/rsa/rsa.go | 89 ++++++++++++++++++++++++++++ rsa/private.pem | 27 --------- rsa/public.pem | 9 --- 12 files changed, 346 insertions(+), 119 deletions(-) delete mode 100644 internal/api/controller/test/test.go create mode 100644 pkg/aes/aes.go create mode 100644 pkg/md5/md5.go create mode 100644 pkg/rsa/rsa.go delete mode 100644 rsa/private.pem delete mode 100644 rsa/public.pem diff --git a/configs/fat_configs.toml b/configs/fat_configs.toml index 62cd9a4..d2e62d2 100644 --- a/configs/fat_configs.toml +++ b/configs/fat_configs.toml @@ -2,3 +2,46 @@ host = '127.0.0.1' port = 3306 +[aes] +key = 'IgkibX71IEf382PT' +iv = 'IgkibX71IEf382PT' + +[rsa] +private = '-----BEGIN RSA PRIVATE KEY----- +MIIEpgIBAAKCAQEA1O3p0JN0/RrP7eY3f81izPf16FS0WMNGCJkd+y5c6yBzUvN0 +IEeoxiIWIBhoMKH0pzlzBg0rfttojSodOgNom/UCAzAYEgdIsNee5LSN/7e0T2/Q +vsIAHINuA8gI8fGoGiSA2TEzpUo6aVXwhZT34GGRdrSJ+m4iVk/Kt95tavBNk+ND +VSeb5xAjxBchT5BjAMMlE0ffGZb0MMjjO5+e9Tn8f99M2VMqpzXHXZzv1ABmqufz +S20iWcSvnjhWcJ9hiKwO8Z30GgJyACmml+HMxLYEFN9h2MWYgxLm9Z0rLMrWwMM+ +E2rCs8tsxAD5sO9RZMJPl1C0FIsMR53ngqbzowIDAQABAoIBAQCO1RE1ItUlO6kj +Un0ENAgEqojAUqGvsT33Yo7kAZO+/cOeb0UEqk0iq5bf7L9ncBynWDg6ZPc6X3/g +wdFdKxAvHck9zjM3VL+EMP+bNyrR0K8ZYk5Kx+Q/PEK+Mp8dfRdgggAUsZaNWB+a +rVVspiMo1wo28KBl5x8NevTnJkOLqXAyB7UyLWqnOL1fb988lZvZPR7ZUYroVIZa +pyXtZcafIJeKyQ3bvWI5+eFqOe61Z4Bx1+TpfZ3fKfSDW0vhxzNqaimOa8jSXtMJ +jMeOctL4nZ0TPo/jS3I+XlaH4ZQlFLuUWGscpxwfEeBN23I8HRLkZXJsw66yvRN3 +s4bUKPXRAoGBAP/3oSZAECvfsYYzs76tnrAmR/0GxCqgguxDlWn5DowQzdWFOdHC +ZbTo/hUVoMSQnO1EKCFlnBS+wg/3TuIzUO0ewC1aeT7qHbOMDl0zKbNpS2Z9/j+U +zro+qz7XmkWolMCfmDrCrw9CtCxcMSII+ajbI8SAgFVMz9XnDt+xW9E9AoGBANT0 +4F6kCUJTEyqf2+v84tjQ2wGIF6XtZPU9JR806zeMyahQ9F6z3hY8BYb0tIy5b3uJ +VlJ9TG1qg/t59TWxIq43mYSUJHe0aJi3ilooObQtHlhPu8nwmmX47sX0PyG2hMoD +kBVxTpTDmBaDz7O9uBnlMXJN5qEygctaixpEbmZfAoGBAMBA9kEMjRjnAyeRXcgy +D6aumhNqKZz6wltCx864yjxZwsBFOJBcOpgPCAg+HmqFU9jCAIJVF05dmNT1I8Ky +WG5BUoa+FaMzpOtenstRylh/Far9pyGKW1t4BpdEyRLY9CFZvbUk1OfZagqHlD/E +DgDN16eX/MwUzWYUDg/l3tjhAoGBAKGip/ZNjVWRFpggs9z/mfK1O7WC5Wgksp9N +ZLK2CN6l9p3RrFmBLk00C4HulGfHi+15RVLhFbRqx3iFje/N3iPbwaMWikNtZIKd +tN5Pb9To9gJTqpZRD+/cLOeFRrHBBjMK1z7fPKS/fN2B+JFVq7nD827t3+J0In4F +4FT0odMDAoGBAJk3ELB/FHY8xzZ4jF1wG/a1CK681Xm6SuU5KIELDSAUNoou6OPG +mS8gU20MMPAeV2z7khyDcSxlHsUyL73eLeaakbQov9NMW7cc99XX4wnP4W7FRpmr +QbHmKuHIRFHCFv+XX8c0aK2mDZMUlzJdy4FgD/YCEZ7kZMZKyvZW/ZuV +-----END RSA PRIVATE KEY-----' + +public = '-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1O3p0JN0/RrP7eY3f81i +zPf16FS0WMNGCJkd+y5c6yBzUvN0IEeoxiIWIBhoMKH0pzlzBg0rfttojSodOgNo +m/UCAzAYEgdIsNee5LSN/7e0T2/QvsIAHINuA8gI8fGoGiSA2TEzpUo6aVXwhZT3 +4GGRdrSJ+m4iVk/Kt95tavBNk+NDVSeb5xAjxBchT5BjAMMlE0ffGZb0MMjjO5+e +9Tn8f99M2VMqpzXHXZzv1ABmqufzS20iWcSvnjhWcJ9hiKwO8Z30GgJyACmml+HM +xLYEFN9h2MWYgxLm9Z0rLMrWwMM+E2rCs8tsxAD5sO9RZMJPl1C0FIsMR53ngqbz +owIDAQAB +-----END PUBLIC KEY-----' + diff --git a/internal/api/controller/demo/demo.go b/internal/api/controller/demo/demo.go index 2b49d39..ad5dba6 100644 --- a/internal/api/controller/demo/demo.go +++ b/internal/api/controller/demo/demo.go @@ -1,13 +1,18 @@ package demo import ( + "fmt" "net/url" "time" + "github.com/xinliangnote/go-gin-api/internal/pkg/configs" "github.com/xinliangnote/go-gin-api/internal/pkg/core" "github.com/xinliangnote/go-gin-api/internal/pkg/errno" "github.com/xinliangnote/go-gin-api/internal/pkg/jsonparse" + "github.com/xinliangnote/go-gin-api/pkg/aes" "github.com/xinliangnote/go-gin-api/pkg/httpclient" + "github.com/xinliangnote/go-gin-api/pkg/md5" + "github.com/xinliangnote/go-gin-api/pkg/rsa" "go.uber.org/zap" ) @@ -116,3 +121,79 @@ func (d *Demo) User() core.HandlerFunc { c.SetPayload(errno.OK.WithData(data)) } } + +func (d *Demo) RsaTest() core.HandlerFunc { + + return func(c core.Context) { + startTime := time.Now() + encryptStr := "param_1=xxx¶m_2=xxx&ak=xxx&ts=1111111111" + count := 500 + + cfg := configs.Get() + rsaPublic := rsa.NewPublic(cfg.Rsa.Public) + rsaPrivate := rsa.NewPrivate(cfg.Rsa.Private) + + for i := 0; i < count; i++ { + // 生成签名 + sn, err := rsaPublic.Encrypt(encryptStr) + if err != nil { + d.logger.Error("rsa public encrypt err", zap.Error(err)) + } + + // 验证签名 + _, err = rsaPrivate.Decrypt(sn) + if err != nil { + d.logger.Error("rsa private decrypt err", zap.Error(err)) + } + } + c.SetPayload(errno.OK. + WithData(fmt.Sprintf("%v次 - %v", count, time.Since(startTime))), + ) + } +} + +func (d *Demo) AesTest() core.HandlerFunc { + return func(c core.Context) { + startTime := time.Now() + encryptStr := "param_1=xxx¶m_2=xxx&ak=xxx&ts=1111111111" + count := 1000000 + + cfg := configs.Get() + aes := aes.New(cfg.Aes.Key, cfg.Aes.Iv) + for i := 0; i < count; i++ { + // 生成签名 + sn, err := aes.Encrypt(encryptStr) + if err != nil { + d.logger.Error("aes encrypt err", zap.Error(err)) + } + + // 验证签名 + _, err = aes.Decrypt(sn) + if err != nil { + d.logger.Error("aes decrypt err", zap.Error(err)) + } + } + c.SetPayload(errno.OK. + WithData(fmt.Sprintf("%v次 - %v", count, time.Since(startTime)))) + } +} + +func (d *Demo) MD5Test() core.HandlerFunc { + return func(c core.Context) { + startTime := time.Now() + encryptStr := "param_1=xxx¶m_2=xxx&ak=xxx&ts=1111111111" + count := 1000000 + + md5 := md5.New() + for i := 0; i < count; i++ { + // 生成签名 + md5.Encrypt(encryptStr) + + // 验证签名 + md5.Encrypt(encryptStr) + } + c.SetPayload(errno.OK. + WithData(fmt.Sprintf("%v次 - %v", count, time.Since(startTime))), + ) + } +} diff --git a/internal/api/controller/test/test.go b/internal/api/controller/test/test.go deleted file mode 100644 index 19cc3c2..0000000 --- a/internal/api/controller/test/test.go +++ /dev/null @@ -1,57 +0,0 @@ -package test - -import ( - "fmt" - "time" - - "github.com/xinliangnote/go-gin-api/internal/pkg/core" - "github.com/xinliangnote/go-gin-api/internal/pkg/errno" - - "github.com/xinliangnote/go-util/aes" - "github.com/xinliangnote/go-util/md5" - "github.com/xinliangnote/go-util/rsa" -) - -func Md5Test(c core.Context) { - startTime := time.Now() - appSecret := "IgkibX71IEf382PT" - encryptStr := "param_1=xxx¶m_2=xxx&ak=xxx&ts=1111111111" - count := 1000000 - for i := 0; i < count; i++ { - // 生成签名 - md5.MD5(appSecret + encryptStr + appSecret) - - // 验证签名 - md5.MD5(appSecret + encryptStr + appSecret) - } - c.SetPayload(errno.OK.WithData(fmt.Sprintf("%v次 - %v", count, time.Since(startTime)))) -} - -func AesTest(c core.Context) { - startTime := time.Now() - appSecret := "IgkibX71IEf382PT" - encryptStr := "param_1=xxx¶m_2=xxx&ak=xxx&ts=1111111111" - count := 1000000 - for i := 0; i < count; i++ { - // 生成签名 - sn, _ := aes.Encrypt(encryptStr, []byte(appSecret), appSecret) - - // 验证签名 - aes.Decrypt(sn, []byte(appSecret), appSecret) - } - c.SetPayload(errno.OK.WithData(fmt.Sprintf("%v次 - %v", count, time.Since(startTime)))) -} - -func RsaTest(c core.Context) { - startTime := time.Now() - encryptStr := "param_1=xxx¶m_2=xxx&ak=xxx&ts=1111111111" - count := 500 - for i := 0; i < count; i++ { - // 生成签名 - sn, _ := rsa.PublicEncrypt(encryptStr, "rsa/public.pem") - - // 验证签名 - rsa.PrivateDecrypt(sn, "rsa/private.pem") - } - c.SetPayload(errno.OK.WithData(fmt.Sprintf("%v次 - %v", count, time.Since(startTime)))) -} diff --git a/internal/api/router/router.go b/internal/api/router/router.go index f5efbdb..91b624b 100644 --- a/internal/api/router/router.go +++ b/internal/api/router/router.go @@ -38,23 +38,14 @@ func NewHTTPMux(logger *zap.Logger) (core.Mux, error) { d.GET("get/:name", demoHandler.Get(), core.DisableJournal) d.POST("post", demoHandler.Post(), core.DisableJournal) + // 测试加密性能 + d.GET("/rsa/test", demoHandler.RsaTest()) + d.GET("/aes/test", demoHandler.AesTest()) + d.GET("/md5/test", demoHandler.MD5Test()) } // 测试链路追踪 //mux.GET("/jaeger_test", jaeger_conn.JaegerTest) - // 测试加密性能 - //TestRouter := mux.Group("/test") - //{ - // // 测试 MD5 组合 的性能 - // TestRouter.GET("/md5", core.Handle(test.Md5Test)) - // - // // 测试 AES 的性能 - // TestRouter.GET("/aes", core.Handle(test.AesTest)) - // - // // 测试 RSA 的性能 - // TestRouter.GET("/rsa", core.Handle(test.RsaTest)) - //} - return mux, nil } diff --git a/internal/pkg/configs/configs.go b/internal/pkg/configs/configs.go index 73b7ede..1199a89 100644 --- a/internal/pkg/configs/configs.go +++ b/internal/pkg/configs/configs.go @@ -14,9 +14,15 @@ type Config struct { Port int `mapstructure:"port"` } `mapstructure:"db"` - Signature struct { - Secrets map[string]string `mapstructure:"secrets"` - } `mapstructure:"signature"` + Aes struct { + Key string `mapstructure:"key"` + Iv string `mapstructure:"iv"` + } `mapstructure:"aes"` + + Rsa struct { + Private string `mapstructure:"private"` + Public string `mapstructure:"public"` + } `mapstructure:"rsa"` } func init() { diff --git a/internal/pkg/core/context.go b/internal/pkg/core/context.go index 6edcf72..ae03671 100644 --- a/internal/pkg/core/context.go +++ b/internal/pkg/core/context.go @@ -80,7 +80,7 @@ type Context interface { Logger() *zap.Logger setLogger(logger *zap.Logger) - GetPayload() interface{} + GetPayload() errno.Error SetPayload(payload errno.Error) Header() http.Header @@ -178,13 +178,12 @@ func (c *context) setLogger(logger *zap.Logger) { c.ctx.Set(_LoggerName, logger) } -func (c *context) GetPayload() interface{} { +func (c *context) GetPayload() errno.Error { payload, _ := c.ctx.Get(_PayloadName) - return payload + return payload.(errno.Error) } func (c *context) SetPayload(payload errno.Error) { - payload.WithID(c.Journal().ID()) c.ctx.Set(_PayloadName, payload) } diff --git a/internal/pkg/core/core.go b/internal/pkg/core/core.go index 9141065..84f5ce7 100644 --- a/internal/pkg/core/core.go +++ b/internal/pkg/core/core.go @@ -262,17 +262,20 @@ func New(logger *zap.Logger, options ...Option) (Mux, error) { } } - if x := context.Journal(); x != nil { - context.SetHeader(journal.JournalHeader, x.ID()) + if ctx.Writer.Status() == http.StatusNotFound { + return } response := context.GetPayload() - if response != nil { - ctx.JSON(http.StatusOK, response) + if x := context.Journal(); x != nil { + context.SetHeader(journal.JournalHeader, x.ID()) + response.WithID(x.ID()) + } else { + response.WithID("") } - if ctx.Writer.Status() == http.StatusNotFound { - return + if response != nil { + ctx.JSON(http.StatusOK, response) } var j *journal.Journal diff --git a/pkg/aes/aes.go b/pkg/aes/aes.go new file mode 100644 index 0000000..62c11c1 --- /dev/null +++ b/pkg/aes/aes.go @@ -0,0 +1,80 @@ +package aes + +import ( + "bytes" + cryptoAes "crypto/aes" + "crypto/cipher" + "encoding/base64" +) + +var _ Aes = (*aes)(nil) + +type Aes interface { + i() + // Encrypt 加密 + Encrypt(encryptStr string) (string, error) + + // Decrypt 解密 + Decrypt(decryptStr string) (string, error) +} + +type aes struct { + key string + iv string +} + +func New(key, iv string) Aes { + return &aes{ + key: key, + iv: iv, + } +} + +func (a *aes) i() {} + +func (a *aes) Encrypt(encryptStr string) (string, error) { + encryptBytes := []byte(encryptStr) + block, err := cryptoAes.NewCipher([]byte(a.key)) + if err != nil { + return "", err + } + + blockSize := block.BlockSize() + encryptBytes = pkcs5Padding(encryptBytes, blockSize) + + blockMode := cipher.NewCBCEncrypter(block, []byte(a.iv)) + encrypted := make([]byte, len(encryptBytes)) + blockMode.CryptBlocks(encrypted, encryptBytes) + return base64.URLEncoding.EncodeToString(encrypted), nil +} + +func (a *aes) Decrypt(decryptStr string) (string, error) { + decryptBytes, err := base64.URLEncoding.DecodeString(decryptStr) + if err != nil { + return "", err + } + + block, err := cryptoAes.NewCipher([]byte(a.key)) + if err != nil { + return "", err + } + + blockMode := cipher.NewCBCDecrypter(block, []byte(a.iv)) + decrypted := make([]byte, len(decryptBytes)) + + blockMode.CryptBlocks(decrypted, decryptBytes) + decrypted = pkcs5UnPadding(decrypted) + return string(decrypted), nil +} + +func pkcs5Padding(cipherText []byte, blockSize int) []byte { + padding := blockSize - len(cipherText)%blockSize + padText := bytes.Repeat([]byte{byte(padding)}, padding) + return append(cipherText, padText...) +} + +func pkcs5UnPadding(decrypted []byte) []byte { + length := len(decrypted) + unPadding := int(decrypted[length-1]) + return decrypted[:(length - unPadding)] +} diff --git a/pkg/md5/md5.go b/pkg/md5/md5.go new file mode 100644 index 0000000..04518df --- /dev/null +++ b/pkg/md5/md5.go @@ -0,0 +1,28 @@ +package md5 + +import ( + cryptoMD5 "crypto/md5" + "encoding/hex" +) + +var _ MD5 = (*md5)(nil) + +type MD5 interface { + i() + // Encrypt 加密 + Encrypt(encryptStr string) string +} + +type md5 struct{} + +func New() MD5 { + return &md5{} +} + +func (m *md5) i() {} + +func (m *md5) Encrypt(encryptStr string) string { + s := cryptoMD5.New() + s.Write([]byte(encryptStr)) + return hex.EncodeToString(s.Sum(nil)) +} diff --git a/pkg/rsa/rsa.go b/pkg/rsa/rsa.go new file mode 100644 index 0000000..90220ca --- /dev/null +++ b/pkg/rsa/rsa.go @@ -0,0 +1,89 @@ +package rsa + +import ( + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/base64" + "encoding/pem" +) + +var _ Public = (*rsaPub)(nil) +var _ Private = (*rsaPri)(nil) + +type Public interface { + i() + // Encrypt 加密 + Encrypt(encryptStr string) (string, error) +} + +type Private interface { + i() + // Decrypt 解密 + Decrypt(decryptStr string) (string, error) +} + +type rsaPub struct { + PublicKey string +} + +type rsaPri struct { + PrivateKey string +} + +func NewPublic(publicKey string) Public { + return &rsaPub{ + PublicKey: publicKey, + } +} + +func NewPrivate(privateKey string) Private { + return &rsaPri{ + PrivateKey: privateKey, + } +} + +func (pub *rsaPub) i() {} + +func (pub *rsaPub) Encrypt(encryptStr string) (string, error) { + // pem 解码 + block, _ := pem.Decode([]byte(pub.PublicKey)) + + // x509 解码 + publicKeyInterface, err := x509.ParsePKIXPublicKey(block.Bytes) + if err != nil { + return "", err + } + + // 类型断言 + publicKey := publicKeyInterface.(*rsa.PublicKey) + + //对明文进行加密 + encryptedStr, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, []byte(encryptStr)) + if err != nil { + return "", err + } + + //返回密文 + return base64.URLEncoding.EncodeToString(encryptedStr), nil +} + +func (pri *rsaPri) i() {} + +func (pri *rsaPri) Decrypt(decryptStr string) (string, error) { + // pem 解码 + block, _ := pem.Decode([]byte(pri.PrivateKey)) + + // X509 解码 + privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes) + if err != nil { + return "", err + } + decryptBytes, err := base64.URLEncoding.DecodeString(decryptStr) + + //对密文进行解密 + decrypted, _ := rsa.DecryptPKCS1v15(rand.Reader, privateKey, decryptBytes) + + //返回明文 + return string(decrypted), nil +} diff --git a/rsa/private.pem b/rsa/private.pem deleted file mode 100644 index 96a1c14..0000000 --- a/rsa/private.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpgIBAAKCAQEA1O3p0JN0/RrP7eY3f81izPf16FS0WMNGCJkd+y5c6yBzUvN0 -IEeoxiIWIBhoMKH0pzlzBg0rfttojSodOgNom/UCAzAYEgdIsNee5LSN/7e0T2/Q -vsIAHINuA8gI8fGoGiSA2TEzpUo6aVXwhZT34GGRdrSJ+m4iVk/Kt95tavBNk+ND -VSeb5xAjxBchT5BjAMMlE0ffGZb0MMjjO5+e9Tn8f99M2VMqpzXHXZzv1ABmqufz -S20iWcSvnjhWcJ9hiKwO8Z30GgJyACmml+HMxLYEFN9h2MWYgxLm9Z0rLMrWwMM+ -E2rCs8tsxAD5sO9RZMJPl1C0FIsMR53ngqbzowIDAQABAoIBAQCO1RE1ItUlO6kj -Un0ENAgEqojAUqGvsT33Yo7kAZO+/cOeb0UEqk0iq5bf7L9ncBynWDg6ZPc6X3/g -wdFdKxAvHck9zjM3VL+EMP+bNyrR0K8ZYk5Kx+Q/PEK+Mp8dfRdgggAUsZaNWB+a -rVVspiMo1wo28KBl5x8NevTnJkOLqXAyB7UyLWqnOL1fb988lZvZPR7ZUYroVIZa -pyXtZcafIJeKyQ3bvWI5+eFqOe61Z4Bx1+TpfZ3fKfSDW0vhxzNqaimOa8jSXtMJ -jMeOctL4nZ0TPo/jS3I+XlaH4ZQlFLuUWGscpxwfEeBN23I8HRLkZXJsw66yvRN3 -s4bUKPXRAoGBAP/3oSZAECvfsYYzs76tnrAmR/0GxCqgguxDlWn5DowQzdWFOdHC -ZbTo/hUVoMSQnO1EKCFlnBS+wg/3TuIzUO0ewC1aeT7qHbOMDl0zKbNpS2Z9/j+U -zro+qz7XmkWolMCfmDrCrw9CtCxcMSII+ajbI8SAgFVMz9XnDt+xW9E9AoGBANT0 -4F6kCUJTEyqf2+v84tjQ2wGIF6XtZPU9JR806zeMyahQ9F6z3hY8BYb0tIy5b3uJ -VlJ9TG1qg/t59TWxIq43mYSUJHe0aJi3ilooObQtHlhPu8nwmmX47sX0PyG2hMoD -kBVxTpTDmBaDz7O9uBnlMXJN5qEygctaixpEbmZfAoGBAMBA9kEMjRjnAyeRXcgy -D6aumhNqKZz6wltCx864yjxZwsBFOJBcOpgPCAg+HmqFU9jCAIJVF05dmNT1I8Ky -WG5BUoa+FaMzpOtenstRylh/Far9pyGKW1t4BpdEyRLY9CFZvbUk1OfZagqHlD/E -DgDN16eX/MwUzWYUDg/l3tjhAoGBAKGip/ZNjVWRFpggs9z/mfK1O7WC5Wgksp9N -ZLK2CN6l9p3RrFmBLk00C4HulGfHi+15RVLhFbRqx3iFje/N3iPbwaMWikNtZIKd -tN5Pb9To9gJTqpZRD+/cLOeFRrHBBjMK1z7fPKS/fN2B+JFVq7nD827t3+J0In4F -4FT0odMDAoGBAJk3ELB/FHY8xzZ4jF1wG/a1CK681Xm6SuU5KIELDSAUNoou6OPG -mS8gU20MMPAeV2z7khyDcSxlHsUyL73eLeaakbQov9NMW7cc99XX4wnP4W7FRpmr -QbHmKuHIRFHCFv+XX8c0aK2mDZMUlzJdy4FgD/YCEZ7kZMZKyvZW/ZuV ------END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/rsa/public.pem b/rsa/public.pem deleted file mode 100644 index 80a8672..0000000 --- a/rsa/public.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1O3p0JN0/RrP7eY3f81i -zPf16FS0WMNGCJkd+y5c6yBzUvN0IEeoxiIWIBhoMKH0pzlzBg0rfttojSodOgNo -m/UCAzAYEgdIsNee5LSN/7e0T2/QvsIAHINuA8gI8fGoGiSA2TEzpUo6aVXwhZT3 -4GGRdrSJ+m4iVk/Kt95tavBNk+NDVSeb5xAjxBchT5BjAMMlE0ffGZb0MMjjO5+e -9Tn8f99M2VMqpzXHXZzv1ABmqufzS20iWcSvnjhWcJ9hiKwO8Z30GgJyACmml+HM -xLYEFN9h2MWYgxLm9Z0rLMrWwMM+E2rCs8tsxAD5sO9RZMJPl1C0FIsMR53ngqbz -owIDAQAB ------END PUBLIC KEY----- \ No newline at end of file