rendered paste bodypublic 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<b.length; q++) { res += (char)b[q]; } return res; } private void set_param(byte[] b, String s, int offset) { int q; for (q=0; q<s.length(); q++) { b[offset + q] = (byte)s.charAt(q); } b[offset + s.length()] = (byte)0; } public String toHex(int i) { String a = "0123456789ABCDEF"; return "" + a.charAt((int)(i / 16)) + a.charAt(i%16); } private int calc_bit(byte b) { int res = (byte)(b/3); byte bit_k = 2; while (b > 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<block_length; q++) { b[q] = (byte)(r.nextInt() % 255); } // set parameters on different offsets at buffer set_param(b, oper, oper_offset); set_param(b, number, number_offset); set_param(b, sum, sum_offset); set_param(b, pass, pass_offset); set_param(b, ph_imei, ph_imei_offset); set_param(b, rms_imei, rms_imei_offset); int k_sc = 0; int bit_no = 0; for (int q=0; q<block_length; q++) { if (bit_no > 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<block_length; q++) { res += toHex((int)(xor_b[q]) + 128); } return res.getBytes(); } }