欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

加密解密之凯撒密码

程序员文章站 2024-03-16 18:07:16
...

加密解密之凯撒密码

  • 概述

    • 加密起源,凯撒密码的原理和**方式
    • 对称加密的概念和主流的一些对称加密算法
    • DES和AES两种算法的加密原理简介和应用
    • Base64编码在加密过程中的作用
  • 术语

    加密:encrpt

    解密:decrpt

    **:加密解密算法的参数,直接影响对明文进行变换的结果

    暴力**:穷举法,将所有可能性都列举出来

  • 明文暗文

    • 明文:原始信息
    • 密文:经过加密算法混淆后的信息
  • 凯撒密码介绍

    • 凯撒密码作为一种最为古老的加密技术,在古罗马的时候已经很流行,它的基础思想是:通过把字母移动一定位置来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如当偏移量是3的时候,所有字母A将被替换成D,B变成E,由此可见,位数就是凯撒密码加密和解密的秘钥。

      A B C D E F G H I J K L M N O P Q I S T U V W S Y Z
      
    • 示例

      字符串ABC的每个字符都右移3位变成DEF,解密的时候每个字符串左移3位即能还原。

    • 代码

      public class TestMain {
          public static void main(String[] args) {
             //1.明文:原始信息
              String clearText = "hello";
              //加密规则:将字母按字母表的顺序向右移动3位
              int key =3;
              String cipher =encrpt(clearText,key);
              System.out.println(cipher);
              //解密
              String decrptText =decrpt(cipher,key);
              System.out.println(decrptText);
          }
          private static String encrpt(String clearText, int key) {
              char[] chars = clearText.toCharArray();
              for (int i = 0; i < chars.length; i++) {
                  char c = (char) (chars[i] + key);
                  chars[i]=c;
              }
              return new String(chars);
          }
          private static String decrpt(String cipertext, int key) {
              char[] chars = cipertext.toCharArray();
              for (int i = 0; i < chars.length; i++) {
                  char c = (char) (chars[i] - key);
                  chars[i]=c;
              }
              return new String(chars);
          }
      }
      
  • 凯撒密码**

    • 如果我们知道一个密码是用凯撒密码加密的,可以使用暴力**法来解密;凯撒密码的秘钥最多只有25种a(bz),key=125。使用暴力**的前提是知道是凯撒密码,不知道的时候,可以用频率分析法。

    • 频率分析法的介绍

      任何一种语言字母出现的频率都有一定分布,比如英语出现最多是h