Golang crypto/rc4.NewCipher() function example
package crypto/rc4
NewCipher creates and returns a new Cipher. The key argument should be the RC4 key, at least 1 byte and at most 256 bytes.
Golang crypto/rc4.NewCipher() function usage example
package main
import (
"crypto/rc4"
"fmt"
)
func main() {
key := []byte("123") // min 1 byte, max is 256 bytes!
c, err := rc4.NewCipher(key)
if err != nil {
// this is the KeySizeError output if the key is less than 1 byte
// or more than 256 bytes
fmt.Println(err.Error) // KeySizeError
}
plaintext := []byte("Secret message")
//encrypt
encrypted := make([]byte, len(plaintext))
c.XORKeyStream(encrypted, plaintext)
fmt.Printf("[%s] encrypted to [%x] by rc4 crypto\n", plaintext, encrypted)
c.Reset() // reset the key data just for fun
//decrypt
decrypted := make([]byte, len(encrypted))
// we need to generate back the key because it was Reset above
c, err = rc4.NewCipher(key)
if err != nil {
fmt.Println(err.Error)
}
c.XORKeyStream(decrypted, encrypted)
fmt.Printf("[%x] decrypted to [%s] \n", encrypted, decrypted)
}
Sample output :
go run cryptorc4.go
[Secret message] encrypted to [0095dcf080002496401070eb197e] by rc4 crypto
[0095dcf080002496401070eb197e] decrypted to [Secret message]
Reference :
http://golang.org/pkg/crypto/rc4/#NewCipher
Advertisement
Something interesting
Tutorials
+12.7k Golang : Add ASCII art to command line application launching process
+5.2k Python : Create Whois client or function example
+7.2k Golang : Null and nil value
+43.5k Golang : Get hardware information such as disk, memory and CPU usage
+17.7k Golang : Read data from config file and assign to variables
+9.7k Golang : interface - when and where to use examples
+5.4k Unix/Linux : How to archive and compress entire directory ?
+11.3k Golang : Post data with url.Values{}
+11.8k Golang : convert(cast) float to string
+8.2k Golang : Qt splash screen with delay example
+13.6k Android Studio : Password input and reveal password example