Android AES Decrypt decrypt(String seed, String encrypted)

Here you can find the source of decrypt(String seed, String encrypted)

Description

decrypt

Parameter

Parameter Description
seed a parameter
encrypted a parameter

Declaration

public static String decrypt(String seed, String encrypted) 

Method Source Code

//package com.java2s;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class Main {

    public static String decrypt(String seed, String encrypted) {
        byte[] rawKey;
        try {/*  w w  w .  j  av a  2s  .  c om*/
            rawKey = getRawKey(seed.getBytes());
            byte[] enc = toByte(encrypted);
            byte[] result = decrypt(rawKey, enc);
            String coentn = new String(result);
            return coentn;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    private static byte[] decrypt(byte[] raw, byte[] encrypted)
            throws Exception {
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(
                new byte[cipher.getBlockSize()]));
        byte[] decrypted = cipher.doFinal(encrypted);
        return decrypted;
    }

    private static byte[] getRawKey(byte[] seed) throws Exception {
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
        sr.setSeed(seed);
        kgen.init(128, sr);
        SecretKey sKey = kgen.generateKey();
        byte[] raw = sKey.getEncoded();

        return raw;
    }

    public static byte[] toByte(String hexString) {
        int len = hexString.length() / 2;
        byte[] result = new byte[len];
        for (int i = 0; i < len; i++)
            result[i] = Integer.valueOf(
                    hexString.substring(2 * i, 2 * i + 2)).byteValue();
        return result;
    }
}

Related

  1. decrypt(String dataPassword, String encrypted)
  2. decrypt(String encrypted)
  3. decrypt(String key, String encrypted)
  4. decrypt(String key, String src)
  5. decrypt(String seed, String encrypted)
  6. decrypt(String seed, String encrypted)
  7. decrypt(String src)
  8. decrypt(String src)
  9. decrypt(byte[] content, String key)