rot13是英文字母加密里面Caesar Cipher(其实就是移位加密)的一种特殊形式,简单来说就是把字母前后部分对调,其中a和n对调,以此类推。针对性的简单来做就是直接判断字母所在范围,然后视情况+/-13即可。但是rot13也可以用Caesar Cipher的通用形式来做,移位的公式其实很简单,见下面代码中rot13部分实现,主要代码如下:
1 type rot13Reader struct { 2 r io.Reader 3 } 4 5 func rot13(b byte) byte { 6 if b >= 'a' && b <= 'z' { 7 b = 'a' + (b-'a'+13)%26 8 } 9 if b >= 'A' && b <= 'Z' { 10 b = 'A' + (b-'A'+13)%26 11 } 12 return b 13 } 14 15 func (reader rot13Reader) Read(b []byte) (int, error) { 16 n, err := reader.r.Read(b) 17 if err != nil { 18 return 0, err 19 } 20 for i := 0; i < n; i++ { 21 b[i] = rot13(b[i]) 22 } 23 return n, err 24 }
这个通用形式和rot13的简单形式计算是等价的,稍加推导即可。此外,上面的rot13代码稍加修改,即可改为Caesar Cipher形式。
分类:
Go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】