- public class test8 {
-
- public final static String[] _t4EnStrs= {"00","01","10","11"};
- public final static String[] _t8EnStrs= {"0000","0001","0010","0011","0100",
- "0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
-
- public static String binaryToString(String binaryStr) {
- StringBuilder result = new StringBuilder();
- String[] split = binaryStr.split("(?<=\\G.{8})");
- for (String str : split) {
- int charCode = Integer.parseInt(str, 2);
- result.append((char) charCode);
- }
- return result.toString();
- }
-
- public static int searchIndex(String[] Strs,String s) {
- for(int i=0;i
- if(Strs[i].equals(s)) {
- return i;
- }
- }
- return -1;
- }
-
- public static String stringToBinary(String str) {
- StringBuilder result= new StringBuilder();
- char[] chars = str.toCharArray();
- for (char ch : chars) {
- result.append(String.format("%8s", Integer.toBinaryString(ch)).replaceAll(" ", "0"));
- }
- return result.toString();
- }
-
- public static String sumCodeStr(String _enterStr,int keyNum,String key) {
- String _rStr="";
- int kn=(keyNum==4)?2:4;
- int _subNum=0;
- char[] keyChars=key.toCharArray();
- String[] enstrs=(keyNum==4)?_t4EnStrs:_t8EnStrs;
- for(int i=0;i<_enterStr.length()/kn;i++) {
- String _subStr=_enterStr.substring(_subNum, (_subNum+kn));
- int _strindex=searchIndex(enstrs, _subStr);
- _rStr=_rStr+keyChars[_strindex];
- _subNum=(i+1)*kn;
- }
- return _rStr;
- }
-
- public static String encode(String enStr,String key) {
- String reEncodeStr="";
- String encodeStr="";
- int kNum=key.length();
- encodeStr=stringToBinary(enStr);
- reEncodeStr=sumCodeStr(encodeStr, kNum, key);
- if(kNum!=4&&kNum!=16) {
- return null;
- }
- return reEncodeStr;
- }
-
- public static String decode(String deStr,String key) {
- String reDecodeStr="";
- String decodeStr="";
- int kNum=key.length();
- if(kNum!=4&&kNum!=16) {
- return null;
- }
- String[] destrs=(kNum==4)?_t4EnStrs:_t8EnStrs;
- char[] deStrChars=deStr.toCharArray();
- for(char enC:deStrChars) {
- int keyIndex=key.indexOf(String.valueOf(enC));
- decodeStr=decodeStr+destrs[keyIndex];
- }
- reDecodeStr=binaryToString(decodeStr);
- return reDecodeStr;
- }
-
- public static void main(String[] args) {
- String s1="1234";
- String key="1234";
- String ss=encode(s1, key);
- System.out.println("加密:"+ss);
- System.out.println("解密:"+decode(ss, key));
- }
-
- }
运行结果:
