private static final String KEY = [[CENSORED!!!]] private static final String KEY_FULL = "x" + KEY + KEY + KEY; // 128 bit private static final String IV = "hackyeasterisfun"; private String calculateShortUrl(String url) { try { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(url.getBytes("UTF-8")); byte[] hash = md.digest(); byte[] part = new byte[4]; System.arraycopy(hash, 0, part, 0, 4); String b32 = new String(new Base32().encode(part), "UTF-8"); b32 = b32.replaceAll("=", ""); return "http://crunch.ly/" + b32; } catch (Exception e) { e.printStackTrace(); } return null; } private String cryptTicket(String url, String shortUrl) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(KEY_FULL.getBytes("UTF-8"), "AES"); cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(IV.getBytes("UTF-8"))); String plain = new String(Base64.encodeBase64(url.getBytes("UTF-8")), "UTF-8"); plain += "@" + new String(Base64.encodeBase64(shortUrl.getBytes("UTF-8")), "UTF-8"); byte[] crypted = cipher.doFinal(plain.getBytes("UTF-8")); return Base64.encodeBase64String(crypted); } catch (Exception e) { e.printStackTrace(); } return null; }