ROT13 是一种简单的字符加密方法,把 26 个英文字母的前 13 个字母与后 13 个字母的编码互换。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import (
"io"
"os"
"strings"
)
type rot13Reader struct {
r io.Reader
}
func rot13byte(sb byte) byte {
s := rune(sb)
if s >= 'a' && s <= 'm' || s >= 'A' && s <= 'M' {
sb += 13
}
if s >= 'n' && s <= 'z' || s >= 'N' && s <= 'Z' {
sb -= 13
}
return sb
}
func (rot13 rot13Reader) Read(data []byte) (readed int, err error) {
readed, err = rot13.r.Read(data)
for i := 0; i < readed; i++ {
data[i] = rot13byte(data[i])
}
return
}
func main() {
s := strings.NewReader("Lbh penpxrq gur pbqr!")
r := rot13Reader{s}
io.Copy(os.Stdout, &r)
}
本文网址: https://golangnote.com/topic/164.html 转摘请注明来源