加密解密之凯撒密码

加密解密之凯撒密码

  • 概述

    • 加密起源,凯撒密码的原理和破解方式
    • 对称加密的概念和主流的一些对称加密算法
    • 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

你可能感兴趣的:(密码学)