DES加密

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

    简介

    称为“Data Encryption Standard”,中文名为“数据加密标准”,是一种使用密钥加密的块算法。DES 算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是 1972 年美国 IBM 公司研制的对称密码体制加密算法。 明文按 64 位进行分组,密钥长 64 位,密钥事实上是 56 位参与 DES 运算(第8、16、24、32、40、48、56、64 位是校验位, 使得每个密钥都有奇数个 1)分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组的加密方法。

    基本原理

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

    • key 为加密解密使用的密钥,
    • data 为加密 解密的数据,
    • mode 为其工作模式。
      当模式为加密模式时,明文按照 64 位进行分组,形成明文组,key 用于对数据加密,当模式为解密模式时,key 用于对数据解密。实际运用中,密钥只用到了 64 位中的 56 位,这样才具有高的安全性。

    输出

    DES 算法把 64 位的明文输入块变为 64 位的密文输出块,它所使用的密钥也是 64 位
    在java中,如果所给的密钥不是64位会进行变换得到64位的。
    记住:如果是有padding,如果是明文如果是8字节的整数倍的话,加密的密文长度肯定要增加8个字节,因为要有标识

    java demo

    java中不同的对象中使用的算法名

     
        public static byte[] CBCEncrypt() {
     
            String data = "123";
            String key = "123123123";//密钥长度必须大于8个字节
            String iv = "12341234";
     
            try {
                // 从原始密钥数据创建DESKeySpec对象
                DESKeySpec dks = new DESKeySpec(key.getBytes());
     
                // 创建一个密匙工厂,然后用它把DESKeySpec转换成
                // 一个SecretKey对象
                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
                SecretKey secretKey = keyFactory.generateSecret(dks);
     
                // Cipher对象实际完成加密操作
                Cipher cipher = Cipher.getInstance("DES/CFB/NoPadding");
                //使用nopadding模式,data必须为8字节的整数倍
    //             Cipher cipher = Cipher.getInstance("DES/CBC/NoPadding");
     
                // 用密匙初始化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("DES算法,加密数据出错!");
                e.printStackTrace();
            }
     
            return null;
        }
    
    
    

    相关文章

      网友评论

          本文标题:DES加密

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