通常比較簡單的加密方法就是你把文本文件加載讀取以后,得到的每一個char加上一個固定的整數(shù),然后再保存,這樣內容就看不懂了。
作為一家“創(chuàng)意+整合+營銷”的成都網站建設機構,我們在業(yè)內良好的客戶口碑。成都創(chuàng)新互聯(lián)公司提供從前期的網站品牌分析策劃、網站設計、成都網站設計、成都做網站、外貿網站建設、創(chuàng)意表現(xiàn)、網頁制作、系統(tǒng)開發(fā)以及后續(xù)網站營銷運營等一系列服務,幫助企業(yè)打造創(chuàng)新的互聯(lián)網品牌經營模式與有效的網絡營銷方法,創(chuàng)造更大的價值。
再讀取以后,把每一個char減去固定的整數(shù),然后保存,就還原回來了。
這種方法是最最簡單的加密方式,不需要使用任何的加密算法。
加多一個判斷,當輸入的長度小于指定長度的時候,出錯;
如果超出指定長度,則取前幾位,譬如指定6位,輸入123, 出錯;輸入123456789,那就只處理123456,忽略后面的789
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
System.out.print("請輸入加密(解密)和要處理的數(shù)字個數(shù):1為加密,2為解密; ");
Scanner scanner = new Scanner(System.in);
String[] input1 = scanner.nextLine().split("\\s+");
String choice = input1[0];
int count = Integer.parseInt(input1[1]);
System.out.print("請輸入要處理的數(shù)字,用空格隔開:");
String input = scanner.nextLine().replaceAll("\\s+", "");
if(input.length() count){
throw new Exception("不足" + count + "位數(shù)字,請檢查輸入");
}else if(input.length() count){
System.out.println("太多數(shù)字,將處理前" + count + "個數(shù)字:" +
input.substring(0, 6));
input = input.substring(0, 6);
}
if(choice.equals("1")){
if(input.length() count){
}
String encode = EncodeUtil.encode(input);
System.out.println("加密后的數(shù)字是: " + encode);
}else{
String decode = EncodeUtil.decode(input);
System.out.println("解密后的數(shù)字: " + decode);
}
}
}
class EncodeUtil{
private static MapString, String encodeMap = null;
private static MapString, String decodeMap = null;
public final static String encode(String strToEncode){
if(encodeMap == null){
encodeMap = new HashMapString, String();
encodeMap.put("0", "7");
encodeMap.put("1", "5");
encodeMap.put("2", "9");
encodeMap.put("3", "1");
encodeMap.put("4", "3");
encodeMap.put("5", "6");
encodeMap.put("6", "8");
encodeMap.put("7", "0");
encodeMap.put("8", "2");
encodeMap.put("9", "4");
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i strToEncode.length(); i++){
sb.append(encodeMap.get(String.valueOf(strToEncode.charAt(i))));
}
return sb.toString();
}
public final static String decode(String strToDecode){
if(decodeMap == null){
decodeMap = new HashMapString, String();
decodeMap.put("7", "0");
decodeMap.put("5", "1");
decodeMap.put("9", "2");
decodeMap.put("1", "3");
decodeMap.put("3", "4");
decodeMap.put("6", "5");
decodeMap.put("8", "6");
decodeMap.put("0", "7");
decodeMap.put("2", "8");
decodeMap.put("4", "9");
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i strToDecode.length(); i++){
sb.append(decodeMap.get(String.valueOf(strToDecode.charAt(i))));
}
return sb.toString();
}
}
------------------測試
C:\Program Files\IBM\RAD 7\jdk\binjava Test
請輸入加密(解密)和要處理的數(shù)字個數(shù):1為加密,2為解密; 1 6
請輸入要處理的數(shù)字,用空格隔開:1 2 3
Exception in thread "main" java.lang.Exception: 不足6位數(shù)字,請檢查輸入
at Test.main(Test.java:19)
C:\Program Files\IBM\RAD 7\jdk\binjava Test
請輸入加密(解密)和要處理的數(shù)字個數(shù):1為加密,2為解密; 1 6
請輸入要處理的數(shù)字,用空格隔開:1 2 3 4 5 6 7
太多數(shù)字,將處理前6個數(shù)字:123456
加密后的數(shù)字是: 591368
C:\Program Files\IBM\RAD 7\jdk\binjava Test
請輸入加密(解密)和要處理的數(shù)字個數(shù):1為加密,2為解密; 1 6
請輸入要處理的數(shù)字,用空格隔開:1 9 9 7 7 1
加密后的數(shù)字是: 544005
C:\Program Files\IBM\RAD 7\jdk\binjava Test
請輸入加密(解密)和要處理的數(shù)字個數(shù):1為加密,2為解密; 2 6
請輸入要處理的數(shù)字,用空格隔開:5 4 4 0 0 5
解密后的數(shù)字: 199771
public?static?void?main(String[]?args)?throws?Exception?{??
String?data?=?"itxxz";??
System.out.println("字符串:itxxz");??
System.err.println("加密:"+encrypt(data));??
System.err.println("解密:"+decrypt(encrypt(data)));??
}
運行結果:
由于代碼太多,可到 ?itxxz.com/a/javashili/2014/1217/encrypt_decrypt.html? 查看,注釋也比較完整,清晰易懂