美文网首页
3DES加密

3DES加密

作者: 夜月行者 | 来源:发表于2017-11-27 18:28 被阅读0次

    简介

    也就是 3 重 DES — — Triple DES。它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

    原理

    使用 3 条 56 位的密钥对数据进行三次加密。3DES(即 Triple DES)是 DES 向 AES 过渡的加密算法(1999年,NIST 将 3-DES 指定为过渡的加密标准)。

    输出

    入口参数有三个:key、data、mode。

    • key 为加密解密使用的密钥,长度为24字节
    • data 为加密 解密的数据,
    • mode 为其工作模式。
      密钥是192位,但是是分开使用的,每个加密快的长度应该还是8字节的整数倍
      记住:如果是有padding,如果是明文如果是8字节的整数倍的话,加密的密文长度肯定要增加8个字节,因为要有标识

    java demo

    public static byte[] Des333() {
     
            String data = "1234123";
            String key = "123456781234567812345678";//密钥长度必须大于8个字节
            String iv = "12341234";
     
            try {
                // 从原始密钥数据创建DESKeySpec对象
                DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());
     
                // 创建一个密匙工厂,然后用它把DESKeySpec转换成
                // 一个SecretKey对象
                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
                SecretKey secretKey = keyFactory.generateSecret(dks);
     
                // Cipher对象实际完成加密操作
                Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
                //使用nopadding模式,data必须为8字节的整数倍
    //             Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
     
                // 用密匙初始化Cipher对象
                IvParameterSpec param = new IvParameterSpec(iv.getBytes());
                cipher.init(Cipher.ENCRYPT_MODE, secretKey, param);
     
                // 执行加密操作
                byte encryptedData[] = cipher.doFinal(data.getBytes());
                System.out.println(str16(encryptedData).length());
     
                return encryptedData;
            } catch (Exception e) {
                System.err.println("出错!");
                e.printStackTrace();
            }
     
            return null;
        }
    
    

    相关文章

      网友评论

          本文标题:3DES加密

          本文链接:https://www.haomeiwen.com/subject/qnwdbxtx.html