zoukankan      html  css  js  c++  java
  • 电文加密小程序

    程序需求:

    恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

      原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

      密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

    用户可输入大小写字母及其余字符,其余字符不进行加密处理。

    项目分析:

      对于原文字符P,其密文字符C满足如下条件:C = (P+3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬,解密方法反之,即:P = (C-3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬。为简化程序,我选择使用字符的ASCII码来判断字符是否应从‘1’开始。

      基于此,该程序加密代码应为:

    def enc(s):
        for i in range(len(s)):
            n=ord(s[i])
            if 96<n<123 or 64<n<91:
                if 87<n<91 or 119<n<123:
                    n=n-23
                    print(chr(n),end='')
                else:
                    print(chr(n+3),end='')
            else:
                print(chr(n),end='')

      其中if 87<n<91 or 119<n<123:用来判断字符是否为X(x),Y(y),Z(z),若是,输出减去23后的字符;若不是,输出加上3后的字符。

      解密代码应为:

    def dec(s):
        for i in range(len(s)):
            n=ord(s[i])
            if 96<n<123 or 64<n<91:
                if 96<n<100 or 64<n<68:
                    n=n+23
                    print(chr(n),end='')
                else:
                    print(chr(n-3),end='')
            else:
                print(chr(n),end='')

      其中if 96<n<100 or 64<n<68:用来判断字符是否为A(a),B(b),C(c),若是,输出加上23后的字符;若不是,输出减去3后的字符。

    调试结果如下:

    写在最后:

      各位同学也可以根据此来改变加密解密的方式写出属于自己的一套电文程序。

  • 相关阅读:
    对象和接口简单比较
    DevExpress报表开发基本流程
    有关ExecuteNonQuery返回值的分析
    2012年度计划
    小测试:有关++i&&i++,你是不是看晕了
    “PE文件格式”1.9版 完整译文
    .NET中的入口及幕后英雄:MSCorEE.dll(转)
    软件构建过程中的隐喻
    转:地图导出格式,教你如何选择
    推荐几个网站
  • 原文地址:https://www.cnblogs.com/zhangmingfeng/p/11710761.html
Copyright © 2011-2022 走看看