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。
分享到:
2012-06-01 17:54
浏览 1816
评论