JAVA——CBC方式的解密与加密

CBC方式的解密与加密


一、创建对称密钥

现代密码算法的过程非常复杂,加密和解密使用相同的密钥,称为对称密钥算法。Java中已经提供了常用的加密算法,我们不需要了解算法的细节就可以直接使用这些算法实现加密。每一种算法所用的密钥都有所不同,本实例演示如何运用Java中提供的方法创建对称密钥,并通过对象序列化方式保存在文件中。

1.原理

首先获取密钥生成器,然后密钥的生成,最后对密钥进行保存。

2.语法

  • Java的 Keygeneratori类中提供了创建对称密钥的方法。KeyGenerator类预定义了一个静态方法 getlnstanceo,通过它获得KeyGenerator类型的对象。DES是目前最常用的对称加密算法,但安全性较差。在本程序中用于获取密钥生成器的代码如下所示:
    KeyGenerator kg =KeyGenerator.getInstance(“DESede”) //获取密钥生成器

  • 初始化密钥生成器一般是指定密钥的长度。如果不进行初始化,系统会根据算法自动使用默认的密钥长度。在本程序中用于初始化密钥生成器的代码如下所示:
    Kg.init(168); //初始化密钥生成器

  • 通过 KeyGenerator类型的对象中 generateKey()方法可以获得密钥。其类型为SecretKey类型,可用于以后的加密和解密。在本程序中用于生成密钥的代码如下所示:
    SecretKeysk=kg. generateKey( );

3.代码

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

public class rw36 {
   

	public static void main(String[] args)throws Exception {
   
		// TODO Auto-generated method stub
		KeyGenerator kg =KeyGenerator.getInstance("DESede");//获取密钥生成器
		kg.init(168);//初始化密钥生成器
		SecretKey sk=kg.generateKey();//生成密钥
		FileOutputStream fos=new FileOutputStream("key1.dat");//将密钥保存在key1.dat文件中
		ObjectOutputStream b=new ObjectOutputStream(fos);
		b.writeObject(sk);
	}

}

二、CBC方式的加密

CBC使用一个8个字节的随机数(称为初始向量,IV)来加密第一个分组,然后使用得到的密文加密第二个分组,加密第二个分组得到的密文再加密第三个分组,……。这样,即使两个分组相同,得到的密文也不同。本实例演示了使用CBC加密方式以及初始向量进行加密的编程步骤。

1.原理

  • 生成密钥。
  • 生成初始向量。
  • 获取密码器。
  • 初始化密码器,并执行加密。

2.语法

  • 在本程序主要是通过下面的语句来获取密钥:
    FileinputStrean f1=nev FileInputStream(path);//获取密钥ObjectInputStream b=new ObjectInputstream(f1);//创建对象输入流
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值