DES(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验。
DES的几种工作方式
第一种电子密本方式(ECB)
将明文分成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。
分享到:
相关推荐
C++ DES加密解密 封装成类了 此代码是测试工具,实现字符串加密解密/文件加密解密。KEY可使用2个 支持中文。 VS2010运行代码
DES加密解密(c++实现)
DES加密算法实现的C++类DES加密算法实现的C++类
很好用的类,我一直用这个类,里面有单倍双倍加密算法的实现,三倍的可以自己改装使用!
DES算法加密解密C++源码及程序(完整的工程文件),内容绝对完整,VC++6.0完美打开,控制台应用程序,而且可以计算加密解密时间的哦
DES加密解密的C++源程序
一个C++标准实现的DES加密解密的动态库,提供了对外接口对字符串进行加密和解密,加密后的数据直接转为BASE64,并使用加密后的BASE64进行解密。包内有.h文件说明了如何使用接口。 后续:搜索网上的DES加密解密算法...
des加密库,支持64位和中英文字符的直接加密解密操作,直接添加工程即可使用
C++实现DES加密解密算法,是网络安全的一种常用的加密算法
C++实现的DES加密解密的动态库的源码工程,使用VS2012创建的工程。
输入的明文密文和密钥都采用string格式字符串,加密结果使用base64编码,解密时候也从base64码解密,参考资料:http://blog.sina.com.cn/s/blog_68b606350100yzud.html
用C++实现加密与解密,包括对文本内容的加密解密、图片的加密解密、DES加密,里面有详细的代码、注释及相关原理等,是一份完整的实验报告。
C++下的DES加密算法,可以对所有文件进行加解密。 控制台程序,VS2012下开发,不引入额外库,方便移植。 包含加解密程序,丰富注释信息,初学者也能看懂。 包含一个加密例子。
DES C++简单实现加密解密 DES C++简单实现加密解密 DES C++简单实现加密解密
基于C++的DES图像加密与解密,加入密钥之后得到加密后的图像,解密后无误差
des加密解密软件 可视化 MFC 文件和文本加密
本程序仅仅是C++实现DES加密的源代码,在VC2008运行通过
DES加密解密过程,C++实现
用c++实现了先用3DES进行内容的加密,再用Base64加密;和先用base64解密再用3DES解密,里面有使用方法基本都可以用的
DES加密解密算法的实现,应用C++编程,可以实现文件加密解密,文件夹加密解密