Categorygithub.com/marspere/goencrypt
repositorypackage
1.0.7
Repository: https://github.com/marspere/goencrypt.git
Documentation: pkg.go.dev

# README

goencrypt

Goencrypt is a library written in pure Go providing a set of encryption algorithms, which including symmetric ciphers(DES, 3DES, AES), asymmetric ciphers (RSA), etc.

Quick Start

Download and install

go get github.com/marspere/[email protected]
# assume the following codes in example.go file
$ cat example.go
package main

import (
	"fmt"

	"github.com/marspere/goencrypt"
)

func main() {
	value, err := goencrypt.MD5("hello world")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(value)
	// output: 5eb63bbbe01eeed093cb22bb8f5acdc3
}
# run example.go
$ go run example.go

API Examples

You can find a number of examples at goencrypt repository.

MD5 Message-Digest Algorithm

It is a widely used cryptographic hash function that produces a hash value to ensure complete and consistent information transfer.

func main() {	
    // The return value is 32-bit lowercase.
    value, err := goencrypt.MD5("hello world")
    fmt.Println(value.Value)
    
    // UpperCase32 return 32-bit uppercase value.
    fmt.Println(value.UpperCase32)
    
    // LowerCase16 return 16-bit lowercase value.
    fmt.Println(value.LowerCase16)
    
    // UpperCase16 return 16-bit uppercase value.
    fmt.Println(value.UpperCase16)
}

RSA Algorithm

RSA encryption algorithm is an asymmetric encryption algorithm. RSA is also a packet encryption algorithm, except that the packet size can be changed according to the size of the key.

RSA encryption limits the length of plaintext, and specifies the maximum length of plaintext to be encrypted = len(key) - 11.

func main() {
	cipher := goencrypt.NewRSACipher(goencrypt.PrintBase64, defaultPublicFile, defaultPrivateFile)
	cipherText, err := cipher.RSAEncrypt([]byte("hello world"))
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(cipherText)
}

AES Algorithm

AES, Advanced Encryption Standard, also known as Rijndael encryption in cryptography, is a block encryption standard adopted by the US federal government.

AES block length is fixed at 128 bits, the key length can be 128, 192 or 256 bits. It including AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB.

func main() {
	cipher, err := goencrypt.NewAESCipher([]byte("0123456789asdfgh"), []byte("0123456789asdfgh"), goencrypt.CBCMode, goencrypt.Pkcs7, goencrypt.PrintBase64)
	if err != nil {
    	fmt.Println(err)
    	return
    }
	cipherText, err := cipher.AESEncrypt([]byte("hello world"))
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(cipherText)
}

DES Algorithm

func main() {
	cipher := goencrypt.NewDESCipher([]byte("12345678"), []byte(""), goencrypt.ECBMode, goencrypt.Pkcs5, goencrypt.PrintBase64)
	cipherText, err := cipher.DESEncrypt([]byte("hello world"))
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(cipherText)
}

Triple DES Algorithm

func main() {
	cipher := goencrypt.NewDESCipher([]byte("12345678abcdefghijklmnop"), []byte("abcdefgh"), goencrypt.CBCMode, goencrypt.Pkcs5, goencrypt.PrintBase64)
	cipherText, err := cipher.TripleDESEncrypt([]byte("hello world"))
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(cipherText)
}

Secure Hash Algorithm

func main() {
	result, err := goencrypt.SHA(goencrypt.SHA1, []byte("hello world"), goencrypt.PrintHex)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(result)
}

Contributing

If you’d like to propose a change please ensure the following:

  • All existing tests are passing.
  • There are tests in the test suite that cover the changes you’re making.
  • You have added documentation strings (in English) to (at least) the public functions you’ve added or modified.