博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang 实现凯撒密码
阅读量:6324 次
发布时间:2019-06-22

本文共 1769 字,大约阅读时间需要 5 分钟。

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

基本思路:

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

凯撒密码加密位移

  • 导入包
import (    "fmt"    "strings" // 包含字符串操作相关方法)
  • 凯撒密码加密代码
//一、凯撒密码加密func caesarEn(strRaw string, step byte) string {    //1.将明文转成小写    strRaw = strings.ToLower(strRaw)    //2.将 明文字符串 转成 明文切片(( 内部 存放的 是 ACSII码 ))    str_slice_src := []byte(strRaw)    //3.创建密文切片对象    str_slice_dst := make([]byte, len(str_slice_src), len(str_slice_src))    //4.循环明文切片,将 ASCII码 + step位移值后 存入 密文切片    for i := 0; i < len(str_slice_src); i++ {        //5.判断 明文字符的ASCII码 位移后 是否有超过 小写字母的范围,如果没有,则直接使用,如果有超过,则需要 -26        if str_slice_src[i] < 123-step {            //直接加上 位移步长            str_slice_dst[i] = str_slice_src[i] + step        } else {            str_slice_dst[i] = str_slice_src[i] + step - 26        }    }    fmt.Println("明文:", strRaw, str_slice_src)    fmt.Println("密文:", string(str_slice_dst), str_slice_dst)}

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

基本思路:

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

凯撒密码解密位移

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

转载地址:http://apmaa.baihongyu.com/

你可能感兴趣的文章
Dundas 系列
查看>>
Windows的命令行查看,修改,删除,添加环境变量
查看>>
iOS 图文混排
查看>>
GC是什么? 为什么要有GC?
查看>>
JQuery EasyUi之界面设计——母版页以及Ajax的通用处理(三)
查看>>
童年记忆
查看>>
Selenium Python bindings 文档一
查看>>
directX的16位和24位的色彩模式
查看>>
WINDOWS 8
查看>>
ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]
查看>>
spring(10)
查看>>
Ubuntu 12.04 LTS 及ubuntu14.10 -- NFS安装
查看>>
hdu 5063 Operation the Sequence(Bestcoder Round #13)
查看>>
django orm多条件查询及except处理不存在记录的样码
查看>>
8.3折抢购最欢迎的Mac清理工具CleanMyMac3
查看>>
第十五章 springboot + pojo默认值设置
查看>>
linux grep命令
查看>>
Button MouseEvent颜色变化
查看>>
django自身提供的sitemap和feed实现样例
查看>>
Entity Framework Code First (一)Conventions
查看>>