我已经编写了以下代码,它试图将字母数字字符加密为 13。这是 go 之旅中的一个示例。我已经使用日志库检查了字节数组 p 中的值,在密码之后,它们似乎旋转了 13。出于某种原因,当它打印到 STDOUT 时,字符没有被加密。我错误地改变了字节数组 p ?
package main
import (
"io"
"os"
"strings"
)
type rot13Reader struct {
r io.Reader
}
func cipher(in byte) (out byte) {
out = in
if in > 64 && in < 91 {
out = in - 64
out = out + 13
out = out % 26
out = out + 64
}
if in > 96 && in < 123 {
out = in - 96
out = out + 13
out = out % 26
out = out + 96
}
return
}
func (reader rot13Reader) Read(p []byte) (n int, err error) {
for index := range p {
p[index] = cipher(p[index])
}
n, err = reader.r.Read(p)
return
}
func main() {
s := strings.NewReader(
"Lbh penpxrq gur pbqr!\n")
r := rot13Reader{s}
io.Copy(os.Stdout, &r)
}
相关分类