Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "errors"
- "fmt"
- )
- // otpEncrypt : encrypted = message XOR key
- func otpEncrypt(message, key string) ([]byte, error) {
- msg := []byte(message)
- k := []byte(key)
- if len(msg) > len(k) {
- return []byte{}, errors.New("length mismatch")
- }
- result := make([]byte, len(msg))
- for idx, b := range msg {
- keyB := k[idx]
- result[idx] = b ^ keyB
- }
- return result, nil
- }
- // otpEncrypt : encrypted = message XOR key
- func otpDecrypt(cypher []byte, key string) (message string, err error) {
- k := []byte(key)
- if len(cypher) > len(k) {
- return "", errors.New("length mismatch")
- }
- result := make([]byte, len(cypher))
- for idx, b := range cypher {
- keyB := k[idx]
- result[idx] = b ^ keyB
- }
- return string(result), nil
- }
- func main() {
- key := "passw0rd"
- cypher, err := otpEncrypt("hallo", key)
- fmt.Println(cypher)
- if err != nil {
- fmt.Printf("Error: %v\n", err)
- }
- msg, err := otpDecrypt(cypher, key)
- fmt.Println(msg)
- if err != nil {
- fmt.Printf("Error: %v\n", err)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement