duangua5742 2018-05-24 20:22
浏览 69
已采纳

字符串的简单加密

I want to encrypt a string with Go, my actual code is:

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

Problem is after encrypt string, when I try to decrypt return different output. Where did I go wrong?

  • 写回答

1条回答 默认 最新

  • douzhaolu4780 2018-05-24 20:37
    关注

    It looks like your goal is to xor the the bytes in a string with the bytes in a key. Here's one way to do it:

    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)
    }
    

    The Encrypt and Decrypt functions are the same:

    func Encrypt(input string) string { return xor(input) }
    func Decrypt(input string) string { return xor(input) }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器