阅读 8758 次
发表时间:2011-08-09
我对楼主是如何把这题弄出来的比较感兴趣
发表时间:2011-08-09
木有看懂题目,坑爹的英文。。。囧
发表时间:2011-08-09
Hex这个单词没看懂就是悲剧...
发表时间:2011-08-10
刚看了之后,写的代码。
public class YiWei {

	/**
	 * 按照索引位置移位
	 * @param strInput 输入的数值字符串
	 * @return
	 */
	public String encrypt(String strInput){
		//int intInput = Integer.parseInt(strInput, 16);
		StringBuffer sb = new StringBuffer();
	    for(int i=0;i<strInput.length();i++){
	    	int intInput = Integer.parseInt(String.valueOf(strInput.charAt(i)), 16);
	    	intInput = (intInput+i)%16;
	    	sb.append(Integer.toHexString(intInput));
	    }
	    return sb.toString().toUpperCase();
	}
	
	/**
	 * 按照索引位置得到原始值
	 * @param strInput 输入的数值字符串
	 * @return
	 */
	public String decrypt(String strInput){
		//int intInput = Integer.parseInt(strInput, 16);
		StringBuffer sb = new StringBuffer();
	    for(int i=0;i<strInput.length();i++){
	    	int intInput = Integer.parseInt(String.valueOf(strInput.charAt(i)), 16);
	    	intInput = (intInput+(16*strInput.length())-i)%16;
	    	sb.append(Integer.toHexString(intInput));
	    }
	    return sb.toString().toUpperCase();
	}
	
	
	public static void main(String[] args) {
		YiWei yw = new YiWei();
		String str = "EFAAD19056123456798055534355FBCDAACBDEFEA45678923455";
		String encrypt = yw.encrypt(str);
		System.out.println("加密之后的值:"+encrypt);
		System.out.println("解密之后的值:"+yw.decrypt(encrypt));
	}
	
}
发表时间:2011-08-10
我也做了这个题目了。公司名就不暴了。当时想到用scala的reverse来做。。后来也没想到Java里面有这个东西,因为不常用。所以就悲剧的自己写了一个。。哈哈
发表时间:2011-08-10
不错,学习了。顺便复习下英语。
发表时间:2011-08-10
public class Encryption {

public static void main(String[] args) {
System.out.println(encrypt("3A4E"));

System.out.println(Decrypt("3B61"));
}

public static String encrypt(String hexStr) {
return common(hexStr, 1);
}

public static String Decrypt(String hexStr) {
return common(hexStr, 15);
}

public static String common(String hexStr, int n) {
char[] a = hexStr.toCharArray();
String result = "";
for (int i = 0; i < a.length; i++) {
int a_temp = (Integer.parseInt(a[i] + "", 16) + n * i) % 16;
result += Integer.toHexString(a_temp).toUpperCase();
}

return result;
}

}
发表时间:2011-08-11
还可以更简洁点


import java.io.FileNotFoundException;
import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

/**
* @param args
* @throws FileNotFoundException
*/
    private static final String encryptKey="0123456789ABCDEF";
    private static final String crackKey="FEDCBA9876543210";
private static final int hex=16;
   
    public static StringBuilder cal(final String key,String mess){//加密和解密    放入当key是encryptKey时是对mess加密,key是crackKey时是解密。
        StringBuilder sb=new StringBuilder();
    int len=mess.length();
        for(int i=0;i<len;i++){
        int index=key.indexOf(mess.charAt(i));
        index=(index+i)%hex;
        sb.append(key.charAt(index));
        }
   
    return sb;
    }
   
    public static String encrypt(String mess){//加密
    return cal(encryptKey,mess).reverse().toString();
    }
   
    public static String crack(String mess){//解密
    StringBuilder sb=new StringBuilder(mess).reverse();;
       return cal(crackKey,sb.toString()).toString();
    }
   
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
String a=encrypt("3A4E");
System.out.println(a);
System.out.println(crack(a));

}

}
Global site tag (gtag.js) - Google Analytics