package client;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import org.apache.commons.codec.binary.Hex;
public class DES {
//DES加密秘钥
public static final byte[] Key = new byte[]{11, 13, 23, 32, 12, 32, 12, 45};
/**
* DES加密方法
* @param src 传入参数值
* @return
*/
public static String encrypt(String src) {
try {
// 生成密钥字符串
String encodeHexString = Hex.encodeHexString(Key);
// 再把我们的字符串转变为字节数组,可以用于另一方使用,验证
byte[] decodeHex = Hex.decodeHex(encodeHexString.toCharArray());
// 生成密钥对象
SecretKeySpec secretKeySpec = new SecretKeySpec(decodeHex, "DES");
// 获取加解密实例
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// 初始化加密模式
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
// 加密
byte[] doFinal = cipher.doFinal(src.getBytes());
return new HexBinaryAdapter().marshal(doFinal);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据指定的密钥及算法,将字符串进行解密。
*
* @param data 要进行解密的数据
* @param key 密钥
* @param algorithm 算法
* @return 解密后的结果
* @throws Exception
*/
public static String decrypt(String data, Key key, String algorithm)
throws Exception {
Cipher cipher = Cipher.getInstance(algorithm);
cipher.init(Cipher.DECRYPT_MODE, key);
String result = new String(cipher.doFinal(StringUtils
.hexStringToByteArray(data)), "utf8");
return result;
}
/**
* 返回可逆算法DES的密钥
*
* @param key 前8字节将被用来生成密钥。
* @return 生成的密钥
* @throws Exception
*/
public static Key getDESKey(byte[] key) throws Exception {
DESKeySpec des = new DESKeySpec( key );
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
return keyFactory.generateSecret( des );
}
public static void main(String[] args) throws Exception {
String b = DES.encrypt("123asda");
System.out.println(b);
String pwd = DES.decrypt(b, getDESKey(Key), "DES");
System.out.println(pwd);
}
}
版权声明:本文为allenlizhimin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。