JAVA文件加密与解密
加密算法:DES
加密模式:CBC(密码分组链)模式
分组填充方式:PKCS#5-Padding
名词解释:
Ø DES:
DES算法是一种对称加密机制,由IBM为美国政府于70年代开发。
其入口参数有三个:key、data、mode。 其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。
Ø CBC模式:
所有在本文档中描述或涉及的对称块加密算法都使用加密块链接(BCB)模式。这种模式
的算法需要一个和块的长度一样大小的初始化向量(IV)。使用一个随机产生的IV,防止完
全一致的和加密算法块尺寸一样长度的第一个明文数据块产生完全一致的密文。
在数据加密之前,IV和第一个明文块进行XOR运算。然后对于连续的块,在当前的明文
块加密之前,先和前一个密文块进行一次XOR运算。
Ø MessageDigest类:
提供一种安全的单程哈希函数,把任意长度的数据转换成固定长度的哈希值。
该函数通过update方法把要处理的数据传入MessageDigest类,然后调用digest方法完成转换。此时MessageDigest对象又回到了原来的初始状态。
这是一个抽像类,应用程序开发人员只需要注意他的几个方法,因为在这个超类中的方法是专门留给愿意把自己的消息摘要算法实现提供出来的密码服务提供者设计的。
Ø DESKeySpec类:
DES密钥的的详细说明。
Ø SecretKeyFactory类:
一种密钥转换机制,用于密钥(Key)和密钥规范(key specification)之间的互相转换。这个类只作用于秘密密钥(对称密钥)。通过key spefication转换成key.
这个类会为指定的密码算法产生SecretKeyFactory对象。
Ø SealedObject类:
给定一个序列化对象,用SealedObject对象把原始对象封装起来,然后使用一种加密算法用序列化的方式把它的原始内容加密。而加密的内容也可以重新序列化,使用正确的密钥解密。
原始对象可以通过两种方式还原:
1.通过一个密码对象(Cipher)
2.通过一个密钥对象(Key)
Ø Cipher类:
通过传入的一个转换信息字符串,产生一个Cipher对象。
转换格式:
1. “algorithm/mode/padding”
2. “algorithm”
如:Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
Ø 主要异常有:
NosuchAlgorithmException
NosuchPaddingException