美文网首页
Golang 实现凯撒密码

Golang 实现凯撒密码

作者: 前端老邹_伯通 | 来源:发表于2019-02-15 20:25 被阅读1次

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

基本思路:

  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)
}

相关文章

  • Golang 实现凯撒密码

    一.凯撒密码加密代码思路 基本思路:设置明文 和 位移步长(秘钥)将明文转成小写,准备 明文字节切片 与 密文切片...

  • 图解密码技术学习-第二章 历史上的密码

    凯撒密码 原理 凯撒密码的实现方式就是对字母进行平移,加密向右平移的话,解密就向左平移 凯撒密码的算法就是平移,密...

  • Design & Coed 13:凯撒密码

    凯撒密码 Caesars Cipher 凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密...

  • Caesars Cipher(凯撒密码)

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • 凯撒密码

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • FCC-JS-BAS-Caesars Cipher-凯撒密码

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • free code camp,凯撒密码,运用String.cha

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • FreeCodeCamp筆記之:Caesars Cipher 凱

    題目: 凯撒密码(让上帝的归上帝,凯撒的归凯撒)下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移...

  • FCC 题目 Caesars Cipher

    要求 让上帝的归上帝,凯撒的归凯撒。 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。 ...

  • 凯撤密码

    凯撤密码 题目描述 让上帝的归上帝,凯撒的归凯撒。下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫...

网友评论

      本文标题:Golang 实现凯撒密码

      本文链接:https://www.haomeiwen.com/subject/xdameqtx.html