Read Password using private key from Properties File - Android java.util

Android examples for java.util:Properties

Description

Read Password using private key from Properties File

Demo Code


import java.io.File;
import java.io.FileInputStream;
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Properties;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

public class Main {
  public static final String filePath = "cookie.prop";
  public static final String PRIVATEKEY = "asdffass";
  public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding";
  public static final String KEY2 = "password";

  public static String getPwd() {
    return decode(PRIVATEKEY, getProperty(KEY2));
  }/* w  w  w .  ja  v a2s  . co  m*/

  public static String decode(String key, String data) {
    if (data == null)
      return null;
    try {
      DESKeySpec dks = new DESKeySpec(key.getBytes());
      SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

      Key secretKey = keyFactory.generateSecret(dks);
      Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
      IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
      AlgorithmParameterSpec paramSpec = iv;
      cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec);
      return new String(cipher.doFinal(hex2byte(data.getBytes())));
    } catch (Exception e) {
      e.printStackTrace();
      return data;
    }
  }

  public static String getProperty(String key) {
    Properties props = get();
    return (props != null) ? props.getProperty(key) : null;
  }

  private static byte[] hex2byte(byte[] b) {
    if ((b.length % 2) != 0)
      throw new IllegalArgumentException();
    byte[] b2 = new byte[b.length / 2];
    for (int n = 0; n < b.length; n += 2) {
      String item = new String(b, n, 2);
      b2[n / 2] = (byte) Integer.parseInt(item, 16);
    }
    return b2;
  }

  public static Properties get() {
    FileInputStream fis = null;
    Properties props = new Properties();
    try {
      File Conf = new File(filePath);
      if (!Conf.exists()) {
        Conf.createNewFile();
      }
      fis = new FileInputStream(Conf);
      props.load(fis);
    } catch (Exception e) {
    } finally {
      try {
        fis.close();
      } catch (Exception e) {
      }
    }
    return props;
  }
}

Related Tutorials