A base crypto package for GoLang. Provides easy crypto operations for - AES, HMAC, Checksum and RSA Encrypt Decrypt
go get -u github.com/vdparikh/crypto go test -v === RUN TestAesEncryptDecrypt --- PASS: TestAesEncryptDecrypt (0.00s) === RUN TestRsaEncryptDecrypt --- PASS: TestRsaEncryptDecrypt (0.00s) === RUN TestHmac --- PASS: TestHmac (0.00s) === RUN TestChecksum --- PASS: TestChecksum (0.00s) PASS ok crypto/crypto 0.029s go test -bench=. goos: darwin goarch: amd64 pkg: github.com/vdparikh/crypto BenchmarkAesEncrypt-8 1000000 1948 ns/op BenchmarkAesDecrypt-8 1000000 1175 ns/op BenchmarkRsaEncrypt-8 20000 96785 ns/op BenchmarkRsaDecrypt-8 10000 210501 ns/op BenchmarkHmac-8 500000 2535 ns/op BenchmarkChecksum-8 3000000 496 ns/op PASS ok github.com/vdparikh/crypto 13.315s go test -cover PASS coverage: 77.0% of statements ok github.com/vdparikh/crypto 0.029s Checkout the example file in the example folder
package main import ( "bytes" "encoding/base64" "io" "io/ioutil" "log" "os" "github.com/vdparikh/crypto" ) /* ## Creating RSA Public/Private Key Pair openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -in private_key.pem -out private_key.pem openssl rsa -pubout -in private_key.pem -out public_key.pem */ func main() { key := []byte("1234543444555666") cryptValue := "This is a long text which will be encrypted" err := ioutil.WriteFile("/tmp/temp_file", []byte(cryptValue), 0644) log.Println("Performing Operations on ", cryptValue) // AES Encrypt encryptedValue, err := crypto.AesEncrypt([]byte(cryptValue), key) if err == nil { log.Print("Encrypted Value: ", encryptedValue) } decryptedValue, err := crypto.AesDecrypt(encryptedValue, key) if err == nil { log.Println("Decrypted Value: ", string(decryptedValue)) } hmacValue := crypto.HmacValue([]byte(cryptValue), key) if err == nil { log.Println("HMAC Value: ", hmacValue) } checksum := crypto.Checksum([]byte(cryptValue)) if err == nil { log.Println("Checksum Value: ", checksum) } checksumFile := crypto.ChecksumFile("/tmp/temp_file") if err == nil { log.Println("Checksum File Value: ", checksumFile) } pubKeyBytes := readFile("public_key.pem") rsaEncryptedValue, err := crypto.RsaEncrypt([]byte(cryptValue), pubKeyBytes) if err == nil { rsaEncryptedValueEncoded := base64.StdEncoding.EncodeToString(rsaEncryptedValue) log.Println("RSA Encrypted Value: ", rsaEncryptedValueEncoded) } privKeyBytes := readFile("private_key.pem") rsaDecryptedValue, err := crypto.RsaDecrypt(rsaEncryptedValue, privKeyBytes) if err == nil { log.Println("RSA Encrypted Value: ", string(rsaDecryptedValue)) } } func readFile(filename string) []byte { buf := bytes.NewBuffer(nil) f, _ := os.Open(filename) io.Copy(buf, f) f.Close() s := buf.Bytes() return s }go run main.go INFO[0000] Performing Operations on This is a long text which will be encrypted INFO[0000] Encrypted Value: g6Fj2gAwOKX9QpLyER/5yhLh8it7sw8wxOrlFe2o/AHDd+N/HequAMJXA2Pau2CwhXB68rRvoWmwZaukNK5L2zp3RWbUxd+UDaFroA== INFO[0000] Decrypted Value: This is a long text which will be encrypted INFO[0000] HMAC Value: ZTFiNTFlYTQyYWFmNzI2ZTY5MDQ5NzYzODQ4OTU3MzEwOWQyNTNlNjhjMmMwN2U1MDVhZGE0ZThhNjkwMWI0YjVjMDAzOWNjMmZlNzQ3NDdhYjI3OWJjZTM5NTk1MjFiNDU1OTA5YjI4ZGRlZDEzYjYxMmE5NjI0OTJjMmNhNjY= INFO[0000] Checksum Value: 091d3d091d2e8359cb56a881a3e2c92c5a6708996a017dcbf17979119fb630ca INFO[0000] Checksum File Value: 091d3d091d2e8359cb56a881a3e2c92c5a6708996a017dcbf17979119fb630ca INFO[0000] RSA Encrypted Value: nKVVuCY7bPzNvfCx+NCa/3QYiliinc2Jhuvf7ZQTc87ZvcDOWiQwvXfkicLLv9WqqjmvzxWGTqxeJvN9Gw9SzRUAadgeQapS4VRR5VoTYsIEs8ye9yyyWzeAf6tp1bsj6GclE3MozPYcC4GMeeyGsrVb1JReNboUxZYOYd5wdqAwwG9MJtaq7pO2rFE7vkP3TGBlP53DzjAttFTilGV/2IbvyRmGUZsuyrKc4nJt+wvzPUVulzMcnqD9wRBPkAJ66SnxK/floYeCLt7U006om+xr19R+JKjLtzO9SDy8YNsv5++jUYhKcjfcts3BSExqO+HhJ5inswr9uRsOvJrvPg== INFO[0000] RSA Encrypted Value: This is a long text which will be encrypted