久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

十六進制編碼求異或

 xmule 2012-07-21

如同消息頭加密一樣:對兩字符串先進行轉碼,再求兩轉碼后的異或,生成新的十六進制編碼:

初步處理如下:

Java代碼  收藏代碼
  1. package com.foxconn;  
  2.   
  3. import java.text.ParseException;  
  4.   
  5. public class Aa {  
  6.     /* 
  7.      * @author Yujie_Li 
  8.      */  
  9.     private static String hexString = "0123456789ABCDEF";   
  10.       
  11.     public static void main(String args[]) throws ParseException{  
  12.          String code1 = encode("9CE00K00781065");  
  13.          String code2 = encode("TOX$123FTOX$321");  
  14.          System.out.println(code1);  
  15.          System.out.println(code2);  
  16.         byte [] a = code1.getBytes();  
  17.         byte [] b = code2.getBytes();  
  18.         byte [] c = new byte[code1.length()];  
  19.         //byte類型需要先轉化成字符數(shù)組,,然后才能轉化成字符串  
  20.         StringBuffer sb = new StringBuffer();  
  21.         String ret = "";  
  22.         for(int i =0;i<code1.length();i++){  
  23.             String hex = Integer.toHexString((a[i]& 0x0f)^(b[i]& 0x0f));  
  24.             ret += hex.toUpperCase();  
  25.             System.out.println("=========>>" + hex);  
  26.             c[i] = (byte) ((a[i]& 0xFF)^(b[i]& 0xFF));  
  27.             System.out.println(i+"--------"+Integer.toBinaryString(a[i])+  
  28.                     "-------"+Integer.toBinaryString(b[i])+"----"+Integer.toBinaryString((a[i]& 0x0f)^(b[i]& 0x0f)));  
  29.             sb.append(c[i]&0xFF);  
  30.          }  
  31.          String code3 = sb.toString();  
  32.          System.out.println(code3);  
  33.          System.out.println(ret);  
  34.     }  
  35.       
  36.     public static String encode(String str) {  
  37.            // 根據(jù)默認編碼獲取字節(jié)數(shù)組  
  38.            byte[] bytes = str.getBytes();  
  39.            String strs = "";  
  40.            // 將字節(jié)數(shù)組中每個字節(jié)拆解成2位16進制整數(shù)  
  41.            for (int i = 0; i < bytes.length; i++) {  
  42.            // 高四位  
  43.             strs += hexString.charAt((bytes[i] & 0xf0) >> 4);  
  44.             //System.out.println(i+"--"+bytes[i]+"----"+(bytes[i] & 0xf0)+"----"+hexString.charAt((bytes[i] & 0xf0) >> 4));  
  45.             // 低四位  
  46.             strs += hexString.charAt((bytes[i] & 0x0f) >> 0);  
  47.            }  
  48.            return strs;  
  49.         }  
  50. }  

 測試發(fā)現(xiàn)如果轉碼后求異或后某些超過16進制基數(shù)的無法得到正確解,。特做如下修改:

Java代碼  收藏代碼
  1. package com.foxconn;  
  2. import java.text.ParseException;  
  3.   
  4.   
  5. public class Aa {  
  6.     private static String hexStr = "0123456789ABCDEF";   
  7.     public static void main(String args[]) throws ParseException{  
  8.           
  9.        String code1 = encode("9CE00K00781065");  
  10.            String code2 = encode("TOX$123FTOX$321");  
  11.        System.out.println(code1);  
  12.        System.out.println(code2);  
  13.        System.out.println("7F0C1D14017903767F6814010203");  
  14.          
  15.         String result ="";  
  16.        for(int i=0; i<code1.length();i++){  
  17.            char c1 = code1.charAt(i);  
  18.            char c2 = code2.charAt(i);  
  19.            String a = convertHexToBinary(c1+"");  
  20.            String b = convertHexToBinary(c2+"");  
  21.            byte [] aa = a.getBytes();  
  22.            byte [] bb = b.getBytes();  
  23.            String cc ="";  
  24.            forint j = 0;j<aa.length;j++ ){  
  25.               cc +=   aa[j]^bb[j];     
  26.            }  
  27.            String tmp =Integer.toHexString(Integer.valueOf(cc,2).intValue()).toString();  
  28.             
  29.           result +=tmp;  
  30.        }  
  31.     }  
  32.       
  33.     public static String convertHexToBinary(String hexString){  
  34.         long l = Long.parseLong(hexString, 16);  
  35.         String binaryString = Long.toBinaryString(l);  
  36.         int shouldBinaryLen = hexString.length()*4;  
  37.         StringBuffer addZero = new StringBuffer();  
  38.         int addZeroNum = shouldBinaryLen-binaryString.length();  
  39.         for(int i=1;i<=addZeroNum;i++){  
  40.             addZero.append("0");  
  41.         }  
  42.         return addZero.toString()+binaryString;          
  43.     }  
  44.       
  45.     public static String encode(String str) {  
  46.            // 根據(jù)默認編碼獲取字節(jié)數(shù)組  
  47.            byte[] bytes = str.getBytes();  
  48.            String strs = "";  
  49.            // 將字節(jié)數(shù)組中每個字節(jié)拆解成2位16進制整數(shù)  
  50.            for (int i = 0; i < bytes.length; i++) {  
  51.                   //取得高四位  
  52.             strs += hexStr.charAt((bytes[i] & 0xf0) >> 4);  
  53.            // System.out.println(i+"--"+bytes[i]+"----"+(bytes[i] & 0xf0)+"----"+hexString.charAt((bytes[i] & 0xf0) >> 4)+"---"+hexString.charAt((bytes[i] & 0x0f) >> 0));  
  54.             //取得低四位  
  55.             strs += hexStr.charAt((bytes[i] & 0x0f) >> 0);  
  56.            }  
  57.            return strs;  
  58.         }  
  59. }  

 即可

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多