Des加密

 

public class EncryDes {
    /* 加密类 */
    protected Cipher ecipher;

    /* 接密类 */
    protected Cipher dcipher;

    public EncryDes() {
        try {
            // Create the key,"emosdnah"为随即初始化密文
            String passPhrase = "emosdnah";
            /* 生成秘钥 */
            KeySpec keySpec = new DESKeySpec(passPhrase.getBytes());
            SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(
                    keySpec);
            // SecretKeySpec key = new
            // SecretKeySpec(passPhrase.getBytes(),"DES");
            /* 初始化加解密实例 */
            ecipher = Cipher.getInstance(key.getAlgorithm());
            dcipher = Cipher.getInstance(key.getAlgorithm());

            // Prepare the parameter to the ciphers
            // AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt,
            // iterationCount);
            // Create the ciphers
            ecipher.init(Cipher.ENCRYPT_MODE, key);
            dcipher.init(Cipher.DECRYPT_MODE, key);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 对字符串加密
     * 
     * @param source
     *            String 要加密的字符串
     * @return byte[] 已加密的字节
     */
    public byte[] encrypt(String source) {
        try {
            // Encode the string into bytes using utf-8
            // byte[] utf8 = new sun.misc.BASE64Decoder().decodeBuffer(str);

            // Encrypt
            byte[] enc = ecipher.doFinal(source.getBytes());

            // Encode bytes to base64 to get a string
            // return new sun.misc.BASE64Encoder().encode(enc);
            return enc;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 对字节数组解密
     * 
     * @param buf
     *            byte[]
     * @return String
     */
    public String decrypt(byte[] buf) {
        try {
            // Decode base64 to get bytes
            // byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);

            // Decrypt
            byte[] utf8 = dcipher.doFinal(buf);

            // Decode using utf-8
            // return new String(utf8, "UTF8");
            return new String(utf8);
        } catch (javax.crypto.BadPaddingException e) {
        } catch (IllegalBlockSizeException e) {
            // } catch (UnsupportedEncodingException e) {
        }
        return null;
    }

    /**
     * 专用密码加密
     * 
     * @param password
     *            String
     * @return String
     */
    public String getEncPass(String password) {
        byte[] dst = encrypt(password + "        ");// 密码补足十二位
        String dstStr = "";
        for (int i = 0; i < dst.length && i < 12; i++) {// 密文只取前64位
            int cTmp = (int) dst[i] & 0xff;
            String hexStr = Integer.toHexString(cTmp);
            while (hexStr.length() < 2) {
                hexStr = "0" + hexStr;
            }
            dstStr += hexStr;
        }
        return dstStr.toUpperCase();
    }
    
    public static void main(String []args){
        EncryDes des = new EncryDes();
        System.out.println(des.getEncPass("1234567890123"));
    }

}

 

你可能感兴趣的:(des)