// 生成随机字符串
private static String random(int size){
String str = "";
String arr[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
for(int i=0; i<size; i++){
str += arr[(int) Math.round(Math.random() * (arr.length-1))];
}
return str;
}
// 生成二进制参数
private static String strTobinary(String str){
StringBuffer strbuf = new StringBuffer();
String list[] = str.split("");
for(int i=0;i<list.length;i++){
if(i != 0){
strbuf.append(" ");
}
String item = list[i];
String binaryStr = Integer.toBinaryString((int)(item.charAt(0)));
strbuf.append(binaryStr);
};
return strbuf.toString();
}
// main方法测试
public static void main(String[] args) throws Exception{
String salt =random(24);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
Calendar cale = Calendar.getInstance();
int year = cale.get(Calendar.YEAR);
int month = cale.get(Calendar.MONTH) + 1;
int day = cale.get(Calendar.DATE);
String month_str = (month<10 ? "0"+month : month).toString();
String day_str = (day<10 ? "0"+day : day).toString();
String timestamp = cale.getTimeInMillis()+"";
String iv =year+month_str+day_str;
String enc = DES3Util.encode(salt,iv,timestamp).toString();
String str = salt+iv+enc;
System.out.println(salt);
String ciphertext = strTobinary(str);
System.out.println(ciphertext);
}