Skip to content

Golang RSA Encryption Library , Base64 support and uniform string type , Support for signing operations using RSA Support for RSAWithSHA1 and RSAWithSHA256

License

OSMeteor/gorsa

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoRSA Encryption library

based on https://github.com/wenzhenxi/gorsa Optimized the following points for packaging:

  • Optimization of public and private keys requires registration and initialization in advance.
  • The encryption machine does not perform base64 processing, and avoids secondary encapsulation of base64 during cross-program transfer or storage
  • The incoming return uses the string type uniformly to avoid conversion trouble
  • Supports RSAWithSHA1 and RSAWithSHA256 signature verification algorithms

Get expansion pack:

go get github.com/OSMeteor/gorsa

Specific use:

package main

import (
	"errors"
	"fmt"
	"io/ioutil"
	"log"

	"github.com/OSMeteor/gorsa"
)
func main() {
	Pubkey, publicKeyErr := gorsa.ReadSslFileToStr("server.crt")
	if publicKeyErr != nil {
		fmt.Println("---->", publicKeyErr)
	}
	Pirvatekey, privateKeyErr := gorsa.ReadSslFileToStr("server.key")
	if privateKeyErr != nil {
		fmt.Println("----1>", privateKeyErr)
	}

	// 	Pubkey := `-----BEGIN Public key-----
	// MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk+89V7vpOj1rG6bTAKYM
	// 56qmFLwNCBVDJ3MltVVtxVUUByqc5b6u909MmmrLBqS//PWC6zc3wZzU1+ayh8xb
	// UAEZuA3EjlPHIaFIVIz04RaW10+1xnby/RQE23tDqsv9a2jv/axjE/27b62nzvCW
	// eItu1kNQ3MGdcuqKjke+LKhQ7nWPRCOd/ffVqSuRvG0YfUEkOz/6UpsPr6vrI331
	// hWRB4DlYy8qFUmDsyvvExe4NjZWblXCqkEXRRAhi2SQRCl3teGuIHtDUxCskRIDi
	// aMD+Qt2Yp+Vvbz6hUiqIWSIH1BoHJer/JOq2/O6X3cmuppU4AdVNgy8Bq236iXvr
	// MQIDAQAB
	// -----END Public key-----
	// `

	// 	Pirvatekey := `-----BEGIN Private key-----
	// MIIEpAIBAAKCAQEAk+89V7vpOj1rG6bTAKYM56qmFLwNCBVDJ3MltVVtxVUUByqc
	// 5b6u909MmmrLBqS//PWC6zc3wZzU1+ayh8xbUAEZuA3EjlPHIaFIVIz04RaW10+1
	// xnby/RQE23tDqsv9a2jv/axjE/27b62nzvCWeItu1kNQ3MGdcuqKjke+LKhQ7nWP
	// RCOd/ffVqSuRvG0YfUEkOz/6UpsPr6vrI331hWRB4DlYy8qFUmDsyvvExe4NjZWb
	// lXCqkEXRRAhi2SQRCl3teGuIHtDUxCskRIDiaMD+Qt2Yp+Vvbz6hUiqIWSIH1BoH
	// Jer/JOq2/O6X3cmuppU4AdVNgy8Bq236iXvrMQIDAQABAoIBAQCCbxZvHMfvCeg+
	// YUD5+W63dMcq0QPMdLLZPbWpxMEclH8sMm5UQ2SRueGY5UBNg0WkC/R64BzRIS6p
	// jkcrZQu95rp+heUgeM3C4SmdIwtmyzwEa8uiSY7Fhbkiq/Rly6aN5eB0kmJpZfa1
	// 6S9kTszdTFNVp9TMUAo7IIE6IheT1x0WcX7aOWVqp9MDXBHV5T0Tvt8vFrPTldFg
	// IuK45t3tr83tDcx53uC8cL5Ui8leWQjPh4BgdhJ3/MGTDWg+LW2vlAb4x+aLcDJM
	// CH6Rcb1b8hs9iLTDkdVw9KirYQH5mbACXZyDEaqj1I2KamJIU2qDuTnKxNoc96HY
	// 2XMuSndhAoGBAMPwJuPuZqioJfNyS99x++ZTcVVwGRAbEvTvh6jPSGA0k3cYKgWR
	// NnssMkHBzZa0p3/NmSwWc7LiL8whEFUDAp2ntvfPVJ19Xvm71gNUyCQ/hojqIAXy
	// tsNT1gBUTCMtFZmAkUsjqdM/hUnJMM9zH+w4lt5QM2y/YkCThoI65BVbAoGBAMFI
	// GsIbnJDNhVap7HfWcYmGOlWgEEEchG6Uq6Lbai9T8c7xMSFc6DQiNMmQUAlgDaMV
	// b6izPK4KGQaXMFt5h7hekZgkbxCKBd9xsLM72bWhM/nd/HkZdHQqrNAPFhY6/S8C
	// IjRnRfdhsjBIA8K73yiUCsQlHAauGfPzdHET8ktjAoGAQdxeZi1DapuirhMUN9Zr
	// kr8nkE1uz0AafiRpmC+cp2Hk05pWvapTAtIXTo0jWu38g3QLcYtWdqGa6WWPxNOP
	// NIkkcmXJjmqO2yjtRg9gevazdSAlhXpRPpTWkSPEt+o2oXNa40PomK54UhYDhyeu
	// akuXQsD4mCw4jXZJN0suUZMCgYAgzpBcKjulCH19fFI69RdIdJQqPIUFyEViT7Hi
	// bsPTTLham+3u78oqLzQukmRDcx5ddCIDzIicMfKVf8whertivAqSfHytnf/pMW8A
	// vUPy5G3iF5/nHj76CNRUbHsfQtv+wqnzoyPpHZgVQeQBhcoXJSm+qV3cdGjLU6OM
	// HgqeaQKBgQCnmL5SX7GSAeB0rSNugPp2GezAQj0H4OCc8kNrHK8RUvXIU9B2zKA2
	// z/QUKFb1gIGcKxYr+LqQ25/+TGvINjuf6P3fVkHL0U8jOG0IqpPJXO3Vl9B8ewWL
	// cFQVB/nQfmaMa4ChK0QEUe+Mqi++MwgYbRHx1lIOXEfUJO+PXrMekw==
	// -----END Private key-----
	// `
	// Public key encryption private key decryption
	if err := applyPubEPriD(Pubkey, Pirvatekey); err != nil {
		log.Println(err)
	}
	// Public key decryption private key encryption
	if err := applyPriEPubD(Pubkey, Pirvatekey); err != nil {
		log.Println(err)
	}
}

// Public key encryption private key decryption
func applyPubEPriD(Pubkey, Pirvatekey string) error {
	pubenctypt, err := gorsa.PublicEncrypt(`hello world`, Pubkey)
	if err != nil {
		return err
	}
	fmt.Println("Public key encryption:  ", pubenctypt)
	pridecrypt, err := gorsa.PriKeyDecrypt(pubenctypt, Pirvatekey)
	if err != nil {
		return err
	}
	fmt.Println("private key decryption:  ", pridecrypt)
	if pridecrypt != `hello world` {
		return errors.New(`Decryption failed`)
	}
	return nil
}

// Public key decryption private key encryption
func applyPriEPubD(Pubkey, Pirvatekey string) error {
	prienctypt, err := gorsa.PriKeyEncrypt(`hello world`, Pirvatekey)
	if err != nil {
		return err
	}
	fmt.Println("private key encryption:  ", prienctypt)
	pubdecrypt, err := gorsa.PublicDecrypt(prienctypt, Pubkey)
	if err != nil {
		return err
	}
	fmt.Println("Public key decryption:  ", pubdecrypt)
	if pubdecrypt != `hello world` {
		return errors.New(`Decryption failed`)
	}
	return nil
}


About

Golang RSA Encryption Library , Base64 support and uniform string type , Support for signing operations using RSA Support for RSAWithSHA1 and RSAWithSHA256

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%