发表时间: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)); } } |