Java安全学习笔记(四)--CBC方式解密
来源:互联网 发布:美国传播学专业知乎 编辑:程序博客网 时间:2024/06/06 02:25
Java安全学习笔记(三)--CBC方式加密 讲述了CBC方式如何加密,本实例演示CBC如何解密。
CBC方式解密的技术要点:
1.获取密钥文件路径
2.获取密文
3.获取初始向量
4.获取EncCBC.dat中剩余的数据部分
5.取得密钥
6.解密
package core;import java.io.FileInputStream;import java.io.ObjectInputStream;import java.security.Key;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;public class DEC_CBC {public static void main(String[] args) throws Exception {// 获取密钥文件路径String path = System.getProperty("user.dir"); // 获取程序当前路径path = path + "/key1.dat";// 得到密钥的路径//System.out.println(path);//获取密文FileInputStream in=new FileInputStream("EncCBC.dat");//获取初始向量byte[] rand=new byte[8];in.read(rand);//从in中读取8字节的对应初始向量的随机数IvParameterSpec iv=new IvParameterSpec(rand);//利用rand[]获得初始向量IvParameterSpec//获取EncCBC.dat中剩余的数据部分int num=in.available(); //判断剩余字节数量byte[] ctext=new byte[num];in.read(ctext);//把剩余数据读到ctext[]数组中//取得密钥FileInputStream f1=new FileInputStream(path); //获取密钥ObjectInputStream b=new ObjectInputStream(f1);//创建对象输入流Key k=(Key) b.readObject(); //从ObjectInputStream中读取key对象//解密Cipher cp=Cipher.getInstance("DESede/CBC/PKCS5Padding");//获取密码器实例cp.init(Cipher.DECRYPT_MODE, k, iv);//三个参数:第一个参数表示是解密模式,第二个参数是密钥key,第三个参数是加密算法IvParameterSpecbyte[] ptext=cp.doFinal(ctext); //执行解密String p=new String(ptext,"UTF8");System.out.println("CBC解密后的字符串为: ");System.out.println(p);}}
源程序解读:
key1.dat文件的生成可参考Java安全学习笔记(二)--创建对称密钥,EncCBC.dat的生成可参考Java安全学习笔记(三)--CBC方式加密
在本程序中获取初始向量使用了文件输入流的read()方法从文件EncCBC.dat中读取前8个子节点对应初始向量的随机数,并用其创建IvParameterSpec对象。
EncCBC.dat文件中剩余部分为加密结果,因此使用文件输入流的available()方法判断剩余字节的数量,并创建相应大小的字节数组,读入数据。密钥必须和加密时所用的密钥相同
进行解密操作与加密的操作相同,只是在初始化密码器时使用Cipher.DECRYPT_MODE表示进行解密。
阅读全文
0 0
- Java安全学习笔记(四)--CBC方式解密
- Java安全学习笔记(三)--CBC方式加密
- java aes解密cbc模式
- Java安全学习笔记(十一)-RSA算法加密和解密
- Java安全(四)-输入流的解密
- java微信小程序解密AES/CBC/PKCS7Padding
- java之jvm学习笔记四(安全管理器)
- java之jvm学习笔记四(安全管理器)
- AES-128-CBC方式加密解密,已测试通过
- Java安全学习笔记(九)-输入流的加密和解密
- Java安全学习笔记(十)-输出流的加密和解密
- Java 使用AES/CBC/PKCS7Padding 加解密字符串
- C++ 和 java 使用 AES CBC 128 加解密
- java/php对应的AES/CBC/PKCS5Padding模式 加密解密
- android安全学习笔记(四)
- java安全 加密解密!
- Java学习笔记四
- java学习笔记四
- 如何批量修改Word文档中的表格样式和题注格式?
- 富文本编辑器react-quill的使用
- Java 多线程基础
- Android中的动画2(逐帧动画)
- 你人生中的那口井挖了没有?
- Java安全学习笔记(四)--CBC方式解密
- JavaScript中_proto_和prototype的区别和关系?
- Spring学习(十五)-事务的其他属性
- 7种回归模型
- MySQL查询语句练习题,基本够用了
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Java 中的JButton按钮事件
- 【python】Window环境下JPype安装 及项目目录获取
- 微信资源