Skip to content

a Go library to encrypt/decrypt data with RSA public/private key pair and do base85/base64 encoding/decoding.

Notifications You must be signed in to change notification settings

vspaz/rsa-encrypt-decrypt-golang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

58baedf · Mar 2, 2025

History

83 Commits
Nov 3, 2021
Feb 24, 2023
Oct 30, 2021
Mar 22, 2023
Dec 30, 2022
Mar 2, 2025
Mar 2, 2025

Repository files navigation

rsa-encrypt-decrypt-golang

a small library to encrypt/decrypt data with RSA public/private key pair and base64/85 encoding/decoding capabilities.

you can generate your own key pair as:

Generating test public/private RSA key-pair.

openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -out public.pem -pubout -outform PEM

Usage example

package main

const (
	testPrivateKey = `-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxGDcSAjiHKP9v2ITR+BjQmt9Tx2zW08ZyrjOxPew+Gxl2m5z
JyoP8sicZV81BeMNFkMg6q7sMtRXHhX1nFiTql5HBIqhZohYlN3LIXK2bdPWpDtt
rOFXfsSbZ4Wqy3XhXBhiPNn3kkkRv1N5L/IYcdrxwqaqvTlJzOeQnDsd3+AmkYst
uD4rgElOFkcUawtF7lKIYYFi42cYkJo51UD460mYieBezP6dZhFZB56pZ2rV8cQU
NrUQy2llpj+PxX/yhGnYI88ij0FST0gI2l4UsjtwXVB1Y2SxqrhNMdBU7W6ZA8WU
QQidr4MBxEFoujsLjaCl8LMsbEpAAilKezwubQIDAQABAoIBAFgkwbrzgcopMXP9
qXnRlbvyU0R3qFGLp5/+Y5C1PJHE1dK9UKJ7lrz6nnhBy6Lgzrb3Wob8DLij5pZy
dNPATkdiGa5IKznCaUAobUyOGKQjOWxt4ESAwKz9wmMs9ARu3MBhkXaOvzjB411l
Mjf7Ck3QYENmW6yjUiTOq3H0duxM/rn1Y88a9z2+aoWXQTltWvu0qKfb8SsqKzzx
HQFSalgNUxIqs+NoHRAT4ygzGGgipdP2/gXA966UonYuFAkpkutCeKVd7/6dMbm8
bgnr/x6ivGeLkbIaVkHNPRU+P4SYX1/XZohYIkTbggIih2aeH6+lEka8yZURANI6
HSUwLAECgYEA4bfavKu12NiIUO75/ZcqF8ojXq5+7HXP59t5X5MrURj2jizWs8YH
vPdrvYqxQNMZ0U0ZQBdAUWCn0Z11OXEak7YpKP78yoLIw2YnhgLVFvp3xZ+pIjjN
yidWbIvoq8SLMiUYHrMy3lMwVyFjM/AuA6bqNffCbHXqs9Ut+WnDN6ECgYEA3rlZ
S1gnE0sJrAJQ/5FnKgY/+TP6p+/k1SmRahNxYqpdP2t4CSwtYvjExRYcZefWFV1V
G04KvFuKf4p9zasYnISvWV735KU++li/QEw0LrVzXcnoRXiZwXauQzYQI6tuMYmc
NQRGBma3R7lQ/93YV3+hdubG+VCUsAC/B42zk00CgYAJ8zngQU2F3p27u50nkadY
Xx/KB7UupU7h8KncDbfGHmyX/eAFEsC6ksmcFGYV7nhf4p8vVRcPv0wGkINfYd4D
Du+nj/4Cy1sgSfuKC8vq9GWdP5mMGabwt2U26b/6+nIMZtg2Wj3u0Qn7fUxLONY+
cPg4ItDeSSBshwQ8z228oQKBgGyXL/s1OrAEaO3Nn1JLwWHS9EP7XN2ecBKiFr0C
R8kUSSyPqFHIkURtB/sTobrpww5dmA4dCcz2UNuIWXf6UKCXbKsFS5XWH5ONy4l8
3gBcBaiXtcCRYV3bEHHCnTHW9n3+mwOaVs3uLLQynVRzBHT8zGudbyvFZwk9A+aZ
5xENAoGBALO842ymiZmFYiv9CIdfBGFokbokQMci+4cJm4wWzxEiDjAzSglRHAei
/+oGBiPm8mKmx/dcU408x4PK76JlfduuoXuzE9jEmx46kwU4jGDS1GZYkwjGVPY8
8UmZ7fFkjNFJH0Rh5y+tmoFyou3FsWzL2lpd1mIryAH2LR3PGE/t
-----END RSA PRIVATE KEY-----
`
	testPublicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxGDcSAjiHKP9v2ITR+Bj
Qmt9Tx2zW08ZyrjOxPew+Gxl2m5zJyoP8sicZV81BeMNFkMg6q7sMtRXHhX1nFiT
ql5HBIqhZohYlN3LIXK2bdPWpDttrOFXfsSbZ4Wqy3XhXBhiPNn3kkkRv1N5L/IY
cdrxwqaqvTlJzOeQnDsd3+AmkYstuD4rgElOFkcUawtF7lKIYYFi42cYkJo51UD4
60mYieBezP6dZhFZB56pZ2rV8cQUNrUQy2llpj+PxX/yhGnYI88ij0FST0gI2l4U
sjtwXVB1Y2SxqrhNMdBU7W6ZA8WUQQidr4MBxEFoujsLjaCl8LMsbEpAAilKezwu
bQIDAQAB
-----END PUBLIC KEY-----
`
)
package main

import (
    "log"
    "github.com/vspaz/rsa-encrypt-decrypt-golang/pkg/cryptolib"
)

func rsaEncryptDecrypt() {
	// example_1: Encrypt/Decrypt with RSA
	expectedText := "some expectedText goes here"
	encoder := cryptolib.NewEncoder(testPublicKey)
	rsaEncryptedText := encoder.Encrypt(expectedText)

	decoder := cryptolib.NewDecoder(testPrivateKey)
	rsaDecryptedText := decoder.Decrypt(rsaEncryptedText)

	if expectedText != rsaDecryptedText {
		log.Fatalln("failed to decrypt")
	}
}
package main

import (
	"log"
	"github.com/vspaz/rsa-encrypt-decrypt-golang/pkg/cryptolib"
)

func rsaEncryptDecryptAndBase85Encode() {
	expectedText := "some expectedText goes here"

	// encoding example
	encoder := cryptolib.NewEncoder(testPublicKey)
	rsaEncodedText := encoder.Encrypt(text)
	base85EncodedText := encoder.ToBase85(rsaEncodedText)
	log.Println(base85EncodedText)

	// decoding example
	decoder := cryptolib.NewDecoder(testPrivateKey)
	base85decodedText := decoder.FromBase85(base85EncodedText)
	rsaDecodedText := decoder.Decrypt(base85decodedText)
	log.Println(rsaDecodedText) // ->  "some text data"
	if rsaDecodedText != expectedText {
		log.Fatalln("failed to decrypt")
	}
}
package main

import (
	"github.com/vspaz/rsa-encrypt-decrypt-golang/pkg/cryptolib"
	"log"
)

func rsaEncryptDecryptAndBase64Encode() {
	expectedText := "some expectedText goes here"

	// encoding example
	encoder := cryptolib.NewEncoder(testPublicKey)
	rsaEncodedText := encoder.Encrypt(expectedText)
	base64EncodedText := encoder.ToBase64(rsaEncodedText)
	log.Println(base64EncodedText)

	// decoding example
	decoder := cryptolib.NewDecoder(testPrivateKey)
	base64decodedText := decoder.FromBase64(base64EncodedText)
	rsaDecodedText := decoder.Decrypt(base64decodedText)
	log.Println(rsaDecodedText) // ->  "some text data"
	if rsaDecodedText != expectedText {
		log.Fatalln("failed to decrypt")
	}
}
package main

import (
	"github.com/vspaz/rsa-encrypt-decrypt-golang/pkg/cryptolib"
	"log"
)

func encodeDecodeWithBase85() {
	expectedText := "some expectedText goes here"
	encodedText := cryptolib.Encoder{}.ToBase85([]byte(expectedText))
	actualText := string(cryptolib.Decoder{}.FromBase85(encodedText))
	if actualText !=  expectedText {
		log.Fatalln("failed to decode")
    }
}
package main

import (
	"github.com/vspaz/rsa-encrypt-decrypt-golang/pkg/cryptolib"
	"log"
)

func encodeDecodeWithBase64() {
	expectedText := "some expectedText goes here"
	encodedText := cryptolib.Encoder{}.ToBase64([]byte(expectedText))
	actualText := string(cryptolib.Decoder{}.FromBase64(encodedText))
	if actualText !=  expectedText {
		log.Fatalln("failed to decode")
    }
}

NOTE: please refer to:

About

a Go library to encrypt/decrypt data with RSA public/private key pair and do base85/base64 encoding/decoding.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published