Простое шифрование строки - PullRequest
0 голосов
/ 24 мая 2018

Я хочу зашифровать строку с помощью Go, мой фактический код:

package main

import (
    "fmt"
)

const key = "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"  //some random numbers here

func Encrypt(input string) (output string) {
  for i := 0; i < len(input); i++ {
    output += fmt.Sprintf("\\x%02x", input[i] ^ key[i % len(key)])
      }
  return output;
} 

func Decrypt(input string) (output string) {
  key := "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"
  for i := 0; i < len(input); i++ {
    output += string(input[i] ^ key[i % len(key)])
    }
    return output;
} 


func main() {

   stringa := "password"
   encrypted := Encrypt(stringa)
   fmt.Println(encrypted)

   fmt.Println(Decrypt(encrypted))
   fmt.Println(stringa)
}

\xcd\xd3\x4e\xcf\x57\x8d\xfe\xfc
áE^O|?è«áE      U|?ï_á?|?'üáE[U|?êû
password

Проблема возникает после шифрования строки, когда я пытаюсь расшифровать, возвращает другой вывод.Где я ошибся?

1 Ответ

0 голосов
/ 24 мая 2018

Похоже, ваша цель состоит в том, чтобы записать байты в строку с байтами в ключе.Вот один из способов сделать это:

func xor(input string) string {
    output := make([]byte, len(input))
    for i := 0; i < len(input); i++ {
        output[i] = input[i] ^ key[i%len(key)]
    }
    return string(output)
}

Функции шифрования и дешифрования одинаковы:

func Encrypt(input string) string { return xor(input) }
func Decrypt(input string) string { return xor(input) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...