原文为: i am want to see you !
package Cryptography;
import java.util.HashMap;
import java.util.IllegalFormatException;
import java.util.Map;
public class ClassicalCryptography {
//private Map<Character,Integer> map=new HashMap<>(); // 字母映射为数字
private int K; // 密钥K
public ClassicalCryptography(int K) {
this.K = K;
}
public String EnCipher(String OrignalStr) { // 获取密文
OrignalStr = OrignalStr.toLowerCase();
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < OrignalStr.length(); i++) {
int c = OrignalStr.charAt(i) - 'a';
if (c > 25 || c < 0) { //跳过非小写字母
stringBuffer.append(OrignalStr.charAt(i));
} else {
stringBuffer.append((char)(('a' + EnK(K, c, 26))));
}
}
return stringBuffer.toString();
}
public String DeCipher(String OrignalStr) { //获取明文
OrignalStr = OrignalStr.toLowerCase();
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < OrignalStr.length(); i++) {
int c = OrignalStr.charAt(i) - 'a';
if (c > 25 || c < 0) { //跳过非小写字母
stringBuffer.append(OrignalStr.charAt(i));
} else {
stringBuffer.append((char)(('a' + DeK(K, c, 26))));
}
}
return stringBuffer.toString();
}
private static int EnK(int K, int aim, int mod) { // 加密
int p = aim + K;
return p % mod;
}
private static int DeK(int K, int aim, int mod) { // 解密
int p = aim - K < 0 ? aim - K + mod: aim - K;
return p % mod;
}
public static void main(String[] args) {
ClassicalCryptography c = new ClassicalCryptography(11);
String str = "i am want to see you !";
System.out.println("原文为: " + str);
String ste = c.EnCipher(str);
System.out.println("密文为: " + ste);
System.out.println("解密后为: " + c.DeCipher(ste));
}
}
RESULT
密文为: t lx hlye ez dpp jzf !
解密后为: i am want to see you !
@See
web github
来源: http://www.jianshu.com/p/965559c39164