使用java完成DES加密

java代码示例:
/*
 *       key : 密钥Key,key的长度必须大于等于 3*8 = 24 位哈
 *       iv : 初始化向量,增强随机性,长度一般为8的倍数位
 *       str : 需要加解密的字符串
 *       cipherType : 实例化Cipher对象类型, "DESede/CBC/PKCS5Padding" 加密算法名称/分组加密模式/分组的填充方式
 *       keySpex : 实例化密钥生成类型 ,"DESede" 为3DES算法
 * */
private String encrypt(byte[] key, byte[] iv, String str,String cipherType,String keySpec) throws Exception {
    Cipher cipher = initCipher(Cipher.ENCRYPT_MODE,key,iv,cipherType,keySpec);
    // 加密结果的byte数组使用Base64转换为字符串
    return (new BASE64Encoder()).encode(cipher.doFinal(str.getBytes(StandardCharsets.UTF_8)));
}

private String decrypt(byte[] key, byte[] iv, String str,String cipherType,String keySpec) throws Exception {
    Cipher cipher = initCipher(Cipher.DECRYPT_MODE,key,iv,cipherType,keySpec);
    return new String(cipher.doFinal((new BASE64Decoder()).decodeBuffer(str)));
}

public static Cipher initCipher(int type, byte[] key, byte[] iv, String cipherType,String keySpec) {
    try {
        SecureRandom sr = new SecureRandom(); 
        DESedeKeySpec dks = new DESedeKeySpec(key);// 生成24位密钥
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(keySpec);// 实例化密钥生成器
        SecretKey secureKey = keyFactory.generateSecret(dks);
        IvParameterSpec ips = new IvParameterSpec(iv);
        Cipher cipher = Cipher.getInstance(cipherType);
        cipher.init(type, secureKey, ips, sr);
        return cipher;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值