欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 3DES 加解密

程序员文章站 2022-06-15 17:53:10
...
3DES,即三重DES,是DES的加强版。它使用3条56位(共168位)的密钥对数据进行三次加密,通常情况下,提供了较为强大的安全性。

使用3DES和使用DES时类似,需要将算法名称由"DES"改为"DESede"和略微的改变:

public class ThreeDESHelper {
	static String keyFileName = "3des_key.xml";
	private static final String ALGORITHM = "DESede";

	// These segments that are similar to the ones of DES are omitted

	private static SecretKey generateSecretKey(String key) {
		SecretKey secretKey = null;
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			byte[] bytes = key.getBytes();
			md.update(bytes, 0, bytes.length);
			byte[] mdBytes = md.digest(); // Generate 16 bytes whenever
			byte[] encodedBytes = org.apache.commons.codec.binary.Base64.encodeBase64(mdBytes); // Generate 24 bytes for DESedeKeySpec
			DESedeKeySpec keySpec = new DESedeKeySpec(encodedBytes);
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
			secretKey = keyFactory.generateSecret(keySpec);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return secretKey;
	}
}

这里我们使用了消息摘要和Base64编码技术来产生24个字节的key。