public class CryptClass { private int oper_offset, number_offset, sum_offset, pass_offset, ph_imei_offset, rms_imei_offset; private int block_length = 200; public CryptClass(int _oper_offset, int _number_offset, int _sum_offset, int _pass_offset, int _ph_imei_offset, int _rms_imei_offset) { oper_offset = _oper_offset; number_offset = _number_offset; sum_offset = _sum_offset; pass_offset = _pass_offset; ph_imei_offset = _ph_imei_offset; rms_imei_offset = _rms_imei_offset; } public String bytes2str(byte[] b) { int q; String res = ""; for (q=0; q 0) { if ((b & 1) == 1) { res = bit_k*res + 1; bit_k = 2; } else bit_k = 1; b = (byte)(b >> 1); } return res; } public byte[] getBlock2(String rmsKey, String oper, String number, String sum, String pass, String ph_imei, String rms_imei) { String res = ""; byte[] b8 = new byte[8], b = new byte[block_length], xor_b= new byte[block_length], xor_bb = new byte[block_length]; Date currentDate = new java.util.Date(); Random r = new java.util.Random(); int w; // fill block with garbage for (int q=0; q 1000) bit_no -= 987; if (k_sc == rmsKey.length()) k_sc = 0; xor_b[q] = (byte)((b[q] ^ rmsKey.charAt(k_sc++)) ^ (byte)(bit_no % 255)); bit_no += calc_bit(xor_b[q]); } for (int q=0; q