DES加密算法,英文全称为“Data Encryption Standard”,是一种典型的对称加密算法,可以对数据进行加密和解密。DES的密钥长度为8字节(即全长为64位,实际参与运算为56位,分8组,每组最后一位为奇偶校验位,用于校验错误)。
DES加密算法的基本原理是:以64位的明文作为一个单位进行加密,这64位单位被称为分组,每个分组内将密钥和明文数据按照一定的规则进行置换和数据位移,从而得到密文。DES加密过程是可逆的,可以通过加密后的密文和密钥逆向运算得到数据原来的明文。
图19.2.5 DES加密原理
DES加密算法有三个重要的入参,分别为key、data和mode。key为加密解密时所用的密钥,data为数据原文,mode为工作模式(分加密和解密两种模式)。
提示
Java基础包中提供了加密算法的类和方法,开发时可以直接使用。另外,在很多开源市场中,有很多成熟的开源工具类包可以使用,如Spring的security包等。在实际工作中,使用成熟的开源工具包可以大大提高工作效率,但是要注意有些开源工具包存在漏洞,使用时须谨慎。
下面利用Java中已有的java.security.*和java.crypto.*包来实现DES算法。(www.xing528.com)
动手写19.2.6
上面示例中,encryptOrDecrypt()方法有三个入参,其中mode用来标识此方法是用于加密或解密。示例中对“零基础Java从入门到精通”的原始数据进行加密,然后又通过同一个方法对加密后的密文进行解密得到原文。注意:因为编码原因(本书默认为UTF-8编码),加密后的数据在控制台中打印出来为乱码,运行结果为:
图19.2.6 使用DES算法加密和解密示例
DES的一大特点就是计算过程简单,加密速度很快,在20世纪70年代时被广泛使用。但是因为DES实际使用了56位的密钥,以目前飞速发展的计算能力在24小时内就能被破解,所以目前DES加密算法并不安全,只在很少的场景中使用,在一些需要严格加密的场景中不建议使用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。