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
+14.5k Golang : Find network of an IP address
+19.8k Golang : Append content to a file
+17.5k Golang : Linked list example
+14.4k Golang : How to pass map to html template and access the map's elements
+9k Golang : Build and compile multiple source files
+9k Golang : Capture text return from exec function example
+20.9k Golang : Convert PNG transparent background image to JPG or JPEG image
+14.8k Golang : Get URI segments by number and assign as variable example
+28k Golang : Move file to another directory
+9.4k Golang : Play .WAV file from command line
+15.6k Chrome : ERR_INSECURE_RESPONSE and allow Chrome browser to load insecure content
+12.6k Golang : Exit, terminating or aborting a program