Example usage for javax.crypto SecretKeyFactory getInstance

List of usage examples for javax.crypto SecretKeyFactory getInstance

Introduction

In this page you can find the example usage for javax.crypto SecretKeyFactory getInstance.

Prototype

public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException 

Source Link

Document

Returns a SecretKeyFactory object that converts secret keys of the specified algorithm.

Usage

From source file:com.pdftron.pdf.utils.Utils.java

public static String decryptIt(Context context, String value) {
    String cryptoPass = context.getString(context.getApplicationInfo().labelRes);
    try {/*from w  w w.  ja  va2 s  . c  o m*/
        DESKeySpec keySpec = new DESKeySpec(cryptoPass.getBytes("UTF8"));
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey key = keyFactory.generateSecret(keySpec);

        byte[] encrypedPwdBytes = Base64.decode(value, Base64.DEFAULT);
        // cipher is not thread safe
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decrypedValueBytes = (cipher.doFinal(encrypedPwdBytes));

        String decrypedValue = new String(decrypedValueBytes);
        Log.d("MiscUtils", "Decrypted: " + value + " -> " + decrypedValue);
        return decrypedValue;

    } catch (Exception e) {
        Log.e(e.getClass().getName(), e.getMessage());
    }
    return value;
}

From source file:com.owncloud.android.utils.EncryptionUtils.java

/**
 * Encrypt private key with symmetric AES encryption, GCM mode mode and no padding
 *
 * @param privateKey byte64 encoded string representation of private key
 * @param keyPhrase  key used for encryption, e.g. 12 random words
 *                   {@link EncryptionUtils#getRandomWords(int, Context)}
 * @return encrypted string, bytes first encoded base64, IV separated with "|", then to string
 *///from www . ja  va  2 s  . co  m
public static String encryptPrivateKey(String privateKey, String keyPhrase)
        throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException,
        IllegalBlockSizeException, InvalidKeySpecException {
    Cipher cipher = Cipher.getInstance(AES_CIPHER);

    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    byte[] salt = randomBytes(saltLength);
    KeySpec spec = new PBEKeySpec(keyPhrase.toCharArray(), salt, iterationCount, keyStrength);
    SecretKey tmp = factory.generateSecret(spec);
    SecretKeySpec key = new SecretKeySpec(tmp.getEncoded(), AES);

    cipher.init(Cipher.ENCRYPT_MODE, key);
    byte[] bytes = encodeStringToBase64Bytes(privateKey);
    byte[] encrypted = cipher.doFinal(bytes);

    byte[] iv = cipher.getIV();
    String encodedIV = encodeBytesToBase64String(iv);
    String encodedSalt = encodeBytesToBase64String(salt);
    String encodedEncryptedBytes = encodeBytesToBase64String(encrypted);

    return encodedEncryptedBytes + ivDelimiter + encodedIV + ivDelimiter + encodedSalt;
}

From source file:com.pdftron.pdf.utils.Utils.java

public static String encryptIt(Context context, String value) {
    String cryptoPass = context.getString(context.getApplicationInfo().labelRes);
    try {//from  w w  w.ja va 2s  .  c om
        DESKeySpec keySpec = new DESKeySpec(cryptoPass.getBytes("UTF8"));
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey key = keyFactory.generateSecret(keySpec);

        byte[] clearText = value.getBytes("UTF8");
        // Cipher is not thread safe
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, key);

        String encrypedValue = Base64.encodeToString(cipher.doFinal(clearText), Base64.DEFAULT);
        Log.d("MiscUtils", "Encrypted: " + value + " -> " + encrypedValue);
        return encrypedValue;

    } catch (Exception e) {
        Log.d(e.getClass().getName(), e.getMessage());
    }
    return value;
}

From source file:org.apache.xml.security.test.encryption.XMLCipherTester.java

public void testTrippleDesDocumentCipher() throws Exception {
    Document d = document(); // source
    Document ed = null; // target
    Document dd = null; // target
    Element e = d.getDocumentElement();
    Element ee = null;//ww w  . j  a  va  2s  .c o  m

    String source = null;
    String target = null;

    if (haveISOPadding) {

        source = toString(d);

        // prepare for encryption
        byte[] passPhrase = "24 Bytes per DESede key!".getBytes();
        DESedeKeySpec keySpec = new DESedeKeySpec(passPhrase);
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
        SecretKey key = keyFactory.generateSecret(keySpec);

        // encrypt
        cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
        cipher.init(XMLCipher.ENCRYPT_MODE, key);
        ed = cipher.doFinal(d, e);

        //decrypt
        cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
        cipher.init(XMLCipher.DECRYPT_MODE, key);
        ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
        dd = cipher.doFinal(ed, ee);

        target = toString(dd);

        Assert.assertEquals(source, target);
    } else {
        log.warn("Test testTrippleDesDocumentCipher skipped as necessary algorithms not available");
    }
}

From source file:com.owncloud.android.utils.EncryptionUtils.java

/**
 * Decrypt private key with symmetric AES encryption, GCM mode mode and no padding
 *
 * @param privateKey byte64 encoded string representation of private key, IV separated with "|"
 * @param keyPhrase  key used for encryption, e.g. 12 random words
 *                   {@link EncryptionUtils#getRandomWords(int, Context)}
 * @return decrypted string//www.j av  a2  s  .c o m
 */
public static String decryptPrivateKey(String privateKey, String keyPhrase)
        throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException,
        IllegalBlockSizeException, InvalidKeySpecException, InvalidAlgorithmParameterException {

    // split up iv, salt
    String[] strings = privateKey.split(ivDelimiter);
    String realPrivateKey = strings[0];
    byte[] iv = decodeStringToBase64Bytes(strings[1]);
    byte[] salt = decodeStringToBase64Bytes(strings[2]);

    Cipher cipher = Cipher.getInstance(AES_CIPHER);
    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    KeySpec spec = new PBEKeySpec(keyPhrase.toCharArray(), salt, iterationCount, keyStrength);
    SecretKey tmp = factory.generateSecret(spec);
    SecretKeySpec key = new SecretKeySpec(tmp.getEncoded(), AES);

    cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));

    byte[] bytes = decodeStringToBase64Bytes(realPrivateKey);
    byte[] decrypted = cipher.doFinal(bytes);

    String pemKey = decodeBase64BytesToString(decrypted);

    return pemKey.replaceAll("\n", "").replace("-----BEGIN PRIVATE KEY-----", "")
            .replace("-----END PRIVATE KEY-----", "");
}

From source file:com.evolveum.midpoint.prism.crypto.ProtectorImpl.java

private HashedDataType hashPbkd(ProtectedData<String> protectedData, String algorithmUri, String algorithmName)
        throws EncryptionException {

    char[] clearChars = getClearChars(protectedData);
    byte[] salt = generatePbkdSalt();
    int iterations = getPbkdIterations();

    SecretKeyFactory secretKeyFactory;
    try {//from   w w w. ja  va2s  . co  m
        secretKeyFactory = SecretKeyFactory.getInstance(algorithmName);
    } catch (NoSuchAlgorithmException e) {
        throw new EncryptionException(e.getMessage(), e);
    }
    PBEKeySpec keySpec = new PBEKeySpec(clearChars, salt, iterations, getPbkdKeyLength());
    SecretKey key;
    try {
        key = secretKeyFactory.generateSecret(keySpec);
    } catch (InvalidKeySpecException e) {
        throw new EncryptionException(e.getMessage(), e);
    }
    byte[] hashBytes = key.getEncoded();

    HashedDataType hashedDataType = new HashedDataType();

    DigestMethodType digestMethod = new DigestMethodType();
    digestMethod.setAlgorithm(algorithmUri);
    digestMethod.setSalt(salt);
    digestMethod.setWorkFactor(iterations);
    hashedDataType.setDigestMethod(digestMethod);

    hashedDataType.setDigestValue(hashBytes);

    return hashedDataType;
}

From source file:org.alfresco.encryption.AlfrescoKeyStoreImpl.java

protected Key getSecretKey(KeyInformation keyInformation)
        throws NoSuchAlgorithmException, InvalidKeyException, InvalidKeySpecException {
    byte[] keyData = keyInformation.getKeyData();

    if (keyData == null) {
        if (keyInformation.getKeyAlgorithm().equals("DESede")) {
            // no key data provided, generate key data automatically
            keyData = generateKeyData();
        } else {/*  w  w w. ja  v a 2 s  . c o  m*/
            throw new AlfrescoRuntimeException(
                    "Unable to generate secret key: key algorithm is not DESede and no keyData provided");
        }
    }

    DESedeKeySpec keySpec = new DESedeKeySpec(keyData);
    SecretKeyFactory kf = SecretKeyFactory.getInstance(keyInformation.getKeyAlgorithm());
    SecretKey secretKey = kf.generateSecret(keySpec);
    return secretKey;
}

From source file:com.evolveum.midpoint.prism.crypto.ProtectorImpl.java

private boolean compareHashedPbkd(HashedDataType hashedDataType, String algorithmName, char[] clearChars)
        throws EncryptionException {
    DigestMethodType digestMethodType = hashedDataType.getDigestMethod();
    byte[] salt = digestMethodType.getSalt();
    Integer workFactor = digestMethodType.getWorkFactor();
    byte[] digestValue = hashedDataType.getDigestValue();
    int keyLen = digestValue.length * 8;

    SecretKeyFactory secretKeyFactory;
    try {//from   w ww . j  ava 2 s.c  o m
        secretKeyFactory = SecretKeyFactory.getInstance(algorithmName);
    } catch (NoSuchAlgorithmException e) {
        throw new EncryptionException(e.getMessage(), e);
    }
    PBEKeySpec keySpec = new PBEKeySpec(clearChars, salt, workFactor, keyLen);
    SecretKey key;
    try {
        key = secretKeyFactory.generateSecret(keySpec);
    } catch (InvalidKeySpecException e) {
        throw new EncryptionException(e.getMessage(), e);
    }
    byte[] hashBytes = key.getEncoded();

    return Arrays.equals(digestValue, hashBytes);
}

From source file:com.aimluck.eip.mail.util.ALMailUtils.java

/**
 * ??????? ??PBEWithMD5AndDES/*w  w  w  .  j  av  a2  s  .  co  m*/
 *
 * @param cipherMode
 *          Cipher.ENCRYPT_MODE ???? Cipher.DECRYPT_MODE
 * @param password
 * @param data
 * @return
 */
public static final byte[] cryptPBEWithMD5AndDES(int cipherMode, char[] password, byte[] data) {
    byte[] ciphertext = null;
    PBEKeySpec pbeKeySpec;
    PBEParameterSpec pbeParamSpec;
    SecretKeyFactory keyFac;

    // Salt
    byte[] salt = { (byte) 0xc7, (byte) 0x73, (byte) 0x21, (byte) 0x8c, (byte) 0x7e, (byte) 0xc8, (byte) 0xee,
            (byte) 0x99 };

    // Iteration count
    int count = 20;

    // Create PBE parameter set
    pbeParamSpec = new PBEParameterSpec(salt, count);

    pbeKeySpec = new PBEKeySpec(password);
    try {
        keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
        SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);

        // Create PBE Cipher
        Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");

        // Initialize PBE Cipher with key and parameters
        pbeCipher.init(cipherMode, pbeKey, pbeParamSpec);

        // Encrypt/Decrypt the cleartext
        ciphertext = pbeCipher.doFinal(data);
    } catch (Exception e) {
        logger.error("ALMailUtils.cryptPBEWithMD5AndDES", e);
        return null;
    }
    return ciphertext;
}

From source file:com.skplanet.syruppay.token.SyrupPayTokenBuilderTest.java

    _ERROR() throws Exception {
    final String keyFactorySalt = "65594821073030071593";
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
    SecretKeySpec secretKeySpec;/*  www.  j a  va 2  s . com*/
    try {
        KeySpec spec = new PBEKeySpec("7244798e1fab1a9175f752a8a7e12beafe2cd27b208f9f2f7ab43173358153fc5eae2499afa66f7386d74cb8cf4765133c513ae2e6acd521acde4f80d747".toCharArray(), keyFactorySalt.getBytes(), 1, 256);
        SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
        SecretKey secretKey = secretKeyFactory.generateSecret(spec);
        secretKeySpec = new SecretKeySpec(secretKey.getEncoded(), "AES");
    } catch (Exception e) {
        throw e;
    }
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(new byte[cipher.getBlockSize()]));
    System.out.println(new String(cipher.doFinal(Base64.decodeBase64("yMvtcFwlhwBg22GF-biF4A".getBytes())), "UTF-8"));
}