分享
  1. 首页
  2. 文章

Golang 实现凯撒密码

jameszou · · 1450 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一.凯撒密码加密代码思路

基本思路:

  1. 设置明文 和 位移步长(秘钥)
  2. 将明文转成小写,准备 明文字节切片 与 密文切片
  3. 循环将每个明文字符 按照 位移步长 做位移,存入密文切片
  4. 返回密文

凯撒密码加密位移

  • 导入包
import (
 "fmt"
 "strings" // 包含字符串操作相关方法
)
  • 凯撒密码加密代码
//一、凯撒密码加密
func caesarEn(strRaw string, step byte) string {
 //1.明文 转成 小写
 str_raw := strings.ToLower(strRaw)
 //2.位移步长
 step_move := step
 //3.将字符串 转为 明文字符切片
 str_slice_src := []byte(str_raw)
 fmt.Println("明文字符切片:", str_slice_src)
 //4. 创建 密文字符切片
 str_slice_dst := str_slice_src
 //5.循环明文切片
 for i := 0; i < len(str_slice_src); i++ {
 //6.如果当前循环的明文字符 在位移 范围内,则直接 加上 位移步长 存入 密文字符切片
 if str_slice_src[i] < 123-step_move {
 str_slice_dst[i] = str_slice_src[i] + step_move
 } else { //7.如果 明文字符 超出 范围,则 位移后 步长再减去 26
 str_slice_dst[i] = str_slice_src[i] + step_move - 26
 }
 }
 //8.输出结果
 fmt.Println("加密结果为:", step_move, str_slice_dst, string(str_slice_dst))
 return string(str_slice_dst)
}

二.凯撒密码解密代码思路

基本思路:

  1. 设置密文 和 位移步长
  2. 准备 密文字符切片 与 明文字符切片
  3. 循环将每个 密文字符 按照位移步长 做位移,存入明文切片
  4. 返回明文

凯撒密码解密位移

  • 凯撒密码解密代码
//二、凯撒密码解密
func caesarDe(strCipher string, step byte) string {
 //1.明文 转成 小写
 str_cipher := strings.ToLower(strCipher)
 //2.位移步长
 step_move := step
 //3.将字符串 转为 明文字符切片
 str_slice_src := []byte(str_cipher)
 fmt.Println("密文字符切片:", str_slice_src)
 //4. 创建 密文字符切片
 str_slice_dst := str_slice_src
 //5.循环明文切片
 for i := 0; i < len(str_slice_src); i++ {
 //6.如果当前循环的明文字符 在位移 范围内,则直接 加上 位移步长 存入 密文字符切片
 if str_slice_src[i] >= 97+step_move {
 str_slice_dst[i] = str_slice_src[i] - step_move
 } else { //7.如果 明文字符 超出 范围,则 位移后 步长再减去 26
 str_slice_dst[i] = str_slice_src[i] + 26 - step_move
 }
 }
 //8.输出结果
 fmt.Println("解密结果为:", step_move, str_slice_dst, string(str_slice_dst))
 return string(str_slice_dst)
}

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:jameszou

查看原文:Golang 实现凯撒密码

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1450 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏