java与C++的DES加密与解密
DES(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是⼀种⽤56位密钥来加密64位数据的⽅法。⼀般密码长度为8个字节,其中56位加密密钥,每个第8位都⽤作奇偶校验。
DES的⼏种⼯作⽅式
第⼀种电⼦密本⽅式(ECB)
java加密方式有哪些将明⽂分成n个64⽐特分组,如果明⽂长度不是64⽐特的倍数,则在明⽂末尾填充适当数⽬的规定符号。对明⽂组⽤给定的密钥分别进⾏加密,⾏密⽂C=(C0,C1,……,Cn-1)其中Ci=DES(K,xi),i=0,1,…..,n-1。
第⼆种密⽂分组链接⽅式(CBC)
在CBC⽅式下,每个明⽂组xi在加密前与先⼀组密⽂按位模⼆加后,再送到DES加密,CBC⽅式克服了ECB⽅式报内组重的缺点,但由于明⽂组加密前与⼀组密⽂有关,因此前⼀组密⽂的错误会传播到下⼀组。
第三种密⽂反馈⽅式(CFB),可⽤于序列密码
明⽂X=(x0,x1,……,xn-1),其中xi由t个⽐特组成0 第四种输出反馈⽅式(OFB),可⽤于序列密码
与CFB唯⼀不同的是OFB是直接取DES输出的t个⽐特,⽽不是取密⽂的t个⽐特,其余都与CFB相同。但它取的是DES的输出,所以它克服了CFB的密⽂错误传播的缺点
DES的⼏种填补⽅式
DES是对64位数据的加密算法,如数据位数不⾜64位的倍数,需要填充,补充到64位的倍数。
NoPadding
API或算法本⾝不对数据进⾏处理,加密数据由加密双⽅约定填补算法。例如若对字符串数据进⾏加解密,可以补充\0或者空格,然后trim
PKCS5Padding
加密前:数据字节长度对8取余,余数为m,若m>0,则补⾜8-m个字节,字节数值为8-m,即差⼏个字节就补⼏个字节,字节数值即为补充的字节数,若为0则补充8个字节的8
解密后:取最后⼀个字节,值为m,则从数据尾部删除m个字节,剩余数据即为加密前的原⽂
SSL3Padding
SSL3.0协议定义的填补算法
java默认的DES算法实现⽅式为DES/ECB/PKCS5Padding。若c++或其他语⾔与java进⾏加解密互通,若java采⽤默认实现,另⼀⽅⼯作⽅式和填补算法必须都是⽤ECB和PKCS5Padding。
转⾃:[url=bloodwolf-china.iteye/blog/655000]java与C++的DES加密与解密[/url]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。