public class KaiSaEn { public static void main(String[] args) { String input = "Hello World ! " ; //原文右移动3位 int key = 3 ; String s = encryptKaisa(input); System.out.println("加密=="+s); String ans = decryptKaisa(s,key); System.out.println("解密=="+ans); } //解密 private static String decryptKaisa(String s , int key){ char[] chars = s.toCharArray() ; StringBuilder sb = new StringBuilder() ; for (char aChar : chars) { int b = aChar ; //偏移数据 b -= key ; char newb =(char) b ; sb.append(newb) ; } return sb.toString() ; }
private static String encryptKaisa(String input) { char[] chars = input.toCharArray() ; StringBuilder sb = new StringBuilder() ; for (char aChar : chars) { int b = aChar ; b = b + 3 ; char newb = (char) b ; sb.append(newb) ; } //System.out.println(sb.toString()); return sb.toString(); } }
频率分析法 —— 概率论
·密码棒
·目的:不知道密钥情况下进行破解密文
方法:拿到密文选出频率最高的字母,比如最高的是j,对应明文为e;以此类推
Byte和Bit的关系(总搞混)
Byte:字节,数据存储的基本单位,比如移动硬盘1T,单位是Byte
Bit:位,用0或1表示,是数据传输的单位
关系:1Byte = 8Bit
举个栗子:
a的Byte表示:97;bit表示为:1100001(二进制)
代码实现Byte和Bit互相转化
1 2 3 4 5 6 7 8 9 10 11 12 13
public class ByteBit { public static void main(String[] args) { String a = "a" ; //得到字节数组 byte[] bytes = a.getBytes() ; for (byte aByte : bytes) { int c = aByte ; //byte字节对应bit String s = Integer.toBinaryString(c); System.out.println(s); } } }