加密解密之凯撒密码
程序员文章站
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
-
上一篇: three.js 包围盒简单应用