List of usage examples for javax.crypto.spec PBEParameterSpec PBEParameterSpec
public PBEParameterSpec(byte[] salt, int iterationCount)
From source file:csh.cryptonite.Cryptonite.java
public static String decrypt(String value, Context context) throws RuntimeException { try {//w w w . j ava 2 s . c om final byte[] bytes = value != null ? Base64.decode(value, Base64.DEFAULT) : new byte[0]; SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey key = keyFactory.generateSecret(new PBEKeySpec(jniFullPw().toCharArray())); Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES"); pbeCipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(Settings.Secure .getString(context.getContentResolver(), Settings.Secure.ANDROID_ID).getBytes("utf-8"), 20)); return new String(pbeCipher.doFinal(bytes), "utf-8"); } catch (Exception e) { throw new RuntimeException(e); } }
From source file:com.slamd.admin.AdminServlet.java
/** * Generates page content based on an MD5-digest of the query string. * * @param requestInfo The state information for this request. * @param digestString The base64-encoded MD5 digest of the query string to * use to generate the page. *//*from w w w . j a va 2 s . co m*/ static void generatePageFromMD5(RequestInfo requestInfo, String digestString) { try { String dataFile = Constants.MD5_CONTENT_BASE_PATH + '/' + digestString; InputStream inputStream = slamdServer.getClass().getClassLoader().getResourceAsStream(dataFile); byte[] salt = { 0, 0, 0, 0, 0, 0, 0, 0 }; char[] queryChars = requestInfo.request.getQueryString().toCharArray(); int iterations = 1000; String cipherName = "PBEWithMD5AndDES"; StringBuilder htmlBody = requestInfo.htmlBody; AlgorithmParameters algorithmParams = AlgorithmParameters.getInstance(cipherName); algorithmParams.init(new PBEParameterSpec(salt, iterations)); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(cipherName); SecretKey key = keyFactory.generateSecret(new PBEKeySpec(queryChars)); Cipher cipher = Cipher.getInstance(cipherName); cipher.init(Cipher.DECRYPT_MODE, key, algorithmParams); int bytesIn; int bytesOut; byte[] inBuffer = new byte[4096]; byte[] outBuffer = new byte[8192]; while ((bytesIn = inputStream.read(inBuffer)) > 0) { bytesOut = cipher.update(inBuffer, 0, bytesIn, outBuffer); htmlBody.append(new String(outBuffer, 0, bytesOut)); } htmlBody.append(new String(cipher.doFinal())); inputStream.close(); } catch (Exception e) { requestInfo.htmlBody.append(JobClass.stackTraceToString(e)); } }