编辑:sx_zhangjh
2014-11-04
初探Java的CBC保密模式应用
以下是精品学习网小编精心为大家分享的Java的CBC保密模式应用,让我们一起学习,一起进步吧!。
1 引言
随着全球信息高速公路建设的兴起和通信的网络化数字化,个人化,智能化,宽带化进程的不断加快,用户对信息的安全存贮,安全处理和安全传输的需求愈益迫切。伴随着Internet开放性扩展,以及个人通信。多媒体通言,力公室自动化,电子邮件, 电子自动转帐支付系统, 自动零售业务网的建设与实现,信息的安全保护问题就更显突出,解决这一问题的有效的手段是使用现代密码技术。
密码学新方向[11的发表和美国数据加密标准DES的颁布实施标志着现代密码学的开端。从此揭开了商用民用密码研究的序幕。此后实用密码本制的研究基本上沿两个方向进行,即以RSA为代表的公开密钥密码体制和以DES为代表的秘密钥分组密码体制。分组密码具有高强度。高速率,便于计算机软硬件实现,易于标准化和灵活性等特点,通常是信息与网络安全中实现数据加密,数字签名,认证,密钥管理的核心体制,它在通信网络f尤其是计算机通信1和系统安全领域有着最广泛的应用。
由于Java在网络编程中的适用性,以及Java安全体系结构的日益完善和目前Java开发网络安全软件的便利性,用Java来实现信息的加密、解密会具有更好的安全性和应用性。
2 数据加密技术
数据加密技术 是实现信息保密性的一种重要手段,是采用数学方法对原始信息(通常称为“明文”) 进行重新组织,使得加密后的信息f称为“密文”) 在传输过程中,即使被非法接收者获得也无法正确识别。信息的加密能保证交易信息的秘密性。保证用户信息不被非法提取。使用加密技术实施数字签名,进行身份认证,对信息进行完整性校验,能保证信息的真实性和完整性。
在所有的加密算法中。最常用的是“置换表” 算法。在该算法中,每一个数据段对应着“置换表” 中的一个偏移量,偏移量所对应的值就输出成为加密屙的文件。加密程序和解密程序都需要一个这样的“置换表”。这种加密算法比较简单,加密解密速度快,但是只要获得置换表,加密方案容易被识破。
一种改进的算法是字/字节循环移位和XOR操作 如果把一个字或字节在一个数据流内做循环移位。使用多个或变化的方向f左移或右移) ,就可以迅速的产生一个加密的数据流。如果再使用XOR操作。按位做异或操作,那么破译密码就相当困难。CBC (Cipher Block Chaining)使用的就是这种思想。
3 CBC工作模式分析与应用
3.1 CBC 工作模式CBC和ECB、OFB、CFB是1980年NBS为DES推出的保密模式 ,随后,被包含在ISO的642比特的模式标准中。为了尽可能地利用以前的标准,降低成本,NIST也将这4个模式列为AES的模式标准。下面是CBC保密模式的加密解密变换公式。
EK (X):在密钥K作用下加密算法对明文块X的加密。
E一1K fY) :在密钥K作用下解密算法对密文块Y的解密。
P1,? , ,表示明文,每个Pi是n比特块,n是所用密码的分组长度。
C1,? ,Ci,表示相应的密文。
加密变换:Ci=EK f Pi④ Ci一1) 。
解密变换:Pi=E一1K (Ci1 ① Ci—l,C0是初始向量。
3.2 对称密钥的生成要使用CBC模式【 1进行加密解密,首先需要生成密钥文件。如果一个密码系统的加密密钥和解密密钥相同,即收发双方使用相同密钥的密码,即为对称密钥加密,通常称之为“Session Key ”。对称密钥加密技术的经典算法是DES(Data Encryption Standard)算法。DES主要采用替换和移位的方法加密。其运算速度快,密钥生成容易,效率高,具有极高的安全性,适合加密大量的数据。
Java中对称密钥的生成如下:
public void SkeyDES()try{∥使用DESede算法获取密钥生成器KeyGenerator kg = KeyGenerator.getlnstance (*DESede“):
,/初始化密钥生成器,密钥长度为1 68kg init(1 68):
∥生成密钥SecretKey k= kg.generateKey():
//以序列化方式保存密钥FileOutputStream fos = new FileOutputStream fJ|key.
dat”):
ObjectOutputStream bos: new ObjectOutputStream(fos);bos.writeObject(k);∥ 关闭流bos.close();)catch(Exception e){e.printStackTraceO;}
生成的密钥保存在文件key.dat中。
3.3 使用CBC保密模式进行加密、解密对密文分组[5,6】的不同形成了不同的加密方式,EBC(Electronic Code Book)加密方式对每个明文分组独立进行处理。所以,如果明文字节分组相同的话,加密后的密文也是相同的分组。
CBC (Cipher Block Chaining)加密方式在块加密法中增加反馈机制,保证即使输入中的明文块重复出现。这些明文块也会在加密后得到不同的密文块。在加密块链接模式(CBC)中,上一次的加密结果反馈到当前块的加密中。用每个块修改下一个块的加密。这样,每块密文与相应的当前输入明文块相关,与前面的所有明文块有关。所以,即使明文字节分组相同的话,加密后的密文也毫无规律。
标签:JAVA论文
精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。