美文网首页
一个简单的凯撒加密技术

一个简单的凯撒加密技术

作者: 本一和他的朋友们 | 来源:发表于2018-10-28 17:43 被阅读10次

    一个简单的凯撒加密技术

    什么是凯撒加密?

    在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
    为什么使用它?
    Just for fun!!!

    什么人使用它?

    • Male Coder?
    • Formale Coder?
    • Someone interesting ?

    怎么用?

    许多方法,可以直接Google下。我这里用JavaScript方法来完成

    第一步:打开Google游览器

    右键点击空白页面,出现东西
    点击最下边的检查:
    把代码复制到本地文档,然后修改62行input里的内容就ok了。
    把我的代码复制到左边红色箭头的位置,然后按下Enter

    下面是加密的代码

    // 定义我们的 log 函数
    var log = console.log.bind(console)
    var find = function(s1, s2) {
        var index = -1
        for (var i = 0; i < s1.length; i++) {
            var n = s1[i]
            if (n == s2) {
                index = i
                break
            }
        }
        return index
    }
    // 加密
    var jiaMi = function(s, shift) {
        var lower = 'abcdefghijklmnopqrstuvwxyz'
        var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        var sum = lower + upper
        var result = ''
        for (var i = 0; i < s.length; i++) {
            var n = s[i]
            var index = find(sum, n)
            if (index == -1) {
                result += n
            } else {
                var len = sum.length
                var newIndex = (index + shift) % len
                result = result + sum[newIndex]
            }
        }
        return result
    }
    // 这是你想加密的东西,记得把他们放在一对单引号里边
    // 你直接改单引号里边的话就行
    var input = 'sometimes I want to chat with you, but I have no reason to chat with you'
    // 这是加密后的结果,后边的那个60你可以换成任意的数字
    var jiaMiResult = jiaMi(input, 60)
    // 下面是展示加密后和解密后的例子
    log('你说的话', input)
    log('加密后的话', jiaMiResult)
    
    
    

    解密的代码

    // 定义我们的 log 函数
    var log = console.log.bind(console)
    var find = function(s1, s2) {
        var index = -1
        for (var i = 0; i < s1.length; i++) {
            var n = s1[i]
            if (n == s2) {
                index = i
                break
            }
        }
        return index
    }
    // 解密
    var jieMi = function(s, shift) {
        var lower = 'abcdefghijklmnopqrstuvwxyz'
        var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        var sum = lower + upper
        var result = ''
        for (var i = 0; i < s.length; i++) {
            var n = s[i]
            var index = find(sum, n)
            if (index == -1) {
                result += n
            } else {
                var len = sum.length
                var newIndex = (len + index - shift) % len
                result = result + sum[newIndex]
            }
        }
        return result
    }
    // 这是你收到的加密后的话
    // 你直接改单引号里边的话就行
    // 小心:中间不能有空格
    var input = 'AwumBqumA Q EivB Bw kpiB EqBp GwC, jCB Q piDm vw zmiAwv Bw kpiB EqBp GwC'
    // 解密后的话
    // 解密里的60必须和加密方的数字一致,记得解密前询问对方数字是多少
    var jiemiResult = jieMi(input, 60)
    log('加密后的话', input)
    log('解密已经加密的话', jiemiResult)
    
    

    相关文章

      网友评论

          本文标题:一个简单的凯撒加密技术

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