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
+7.4k Golang : Accessing dataframe-go element by row, column and name example
+51.4k Golang : Check if item is in slice/array
+5.4k Golang : Qt update UI elements with core.QCoreApplication_ProcessEvents
+13.9k Golang : How to check if a file is hidden?
+18.8k Golang : How to make function callback or pass value from function as parameter?
+8.2k How to show different content from website server when AdBlock is detected?
+19.5k Golang : How to Set or Add Header http.ResponseWriter?
+5.2k Python : Create Whois client or function example
+7.5k Golang : Process json data with Jason package
+10k Golang : Get escape characters \u form from unicode characters
+31.5k Golang : Example for ECDSA(Elliptic Curve Digital Signature Algorithm) package functions