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 转摘请注明来源