分组密码加密 一、实习目的 1.理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish; 2.以 DES 加密算法为例,掌握分组加密算法加、解密过程的实现。 二、实习内容 1.[基本要求] 以 DES/DESede 为例,利用 java 中的相关类实现对指定字符串的加、解密。 2.[实现提示] (1) 可以利用 java 中的 KeyGenerator 类创建对称秘钥,利用工厂类 KeyGenerator 的静态方法 getInstance()获得 KeyGenerator()类对象; (2) 方法 getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5 或 HmacSHA1 等; (3) 利用工厂类 Cipher 的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。 三、算法分析和流程图 DES 算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是 1972 年美国 IBM 公司研制的对称密码体制加密算法。其密钥长度为 56 位,明文按 64 位进行分组,将分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组的加密方法。DES 加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES 工作的基本原理是,其入口参数有三个:key、data、mode。 key 为加密解密使用的密钥,data 为加密解密的数据,mode 为其工作模式。当模式为加密模式时,明文按照 64 位进行分组,形成明文组,key 用于对数据加密,当模式为解密模式时,key 用于对数据解密。 Encry ptionDecrtptionDES 密钥 DES 密钥明文密文明文 四、测试数据和预期结果 1 按照规定,密钥输入移位的数字,明文输入字母,如下图所示,加密成功 2 加密 yanglingmalasong+123 3测试*能否加密 加密 4 测试汉字能否加密 五、源程序 import java.io.FileOutputStream; import java.io.ObjectOutputStream; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; public class Skey_DES { /** * @param args */ public static void main(String args[])throws Exception { // TODO Auto-generated method stub KeyGenerator kg=KeyGenerator.getInstance ("DESede" ); kg.init(168); SecretKey k=kg.generateKey(); FileOutputStream f=new FileOutputStream("H:\\key1.dat" ); ObjectOutputStream b=new ObjectOutputStream(f); b.write...