Java.NET中的DES对称加密

各大语言互操作消除方案:

public override void GenerateKey()

public override ICryptoTransform CreateDecryptor(byte[] rgbKey,
byte[] rgbIV)

PKCS7Padding(PKCS5Padding)填充格局:为.NET和Java的暗中同意填充格局,对加密数量字节长度对8取余为r,如r大于0,则补8-r个字节,字节为8-r的值;假诺r等于0,则补七个字节8.比如:

二 、第二组数据D1与向量I异或后的结果开始展览DES加密得到第2组密文C1(注意:那里有向量I的布道,ECB方式下并未行使向量I)

public override void GenerateIV()

肆 、之后的数码以此类推,得到Cn

对于.NET,框架在System.Security.Cryptography命名空间下提供了DESCryptoServiceProvider作为System.Security.Cryptography.DES加密解密的包裹接口,它提供了之类的四个艺术:

从.NET类库封装景况,加解密供给传入三个Key和IV向量。而且Key必须为8字节的多寡,不然会一直抛卓殊出来,当使用ECB格局下,不管传入什么IV向量,加密结果都没有差距。

.NET中的DES加密

 

其三种密文反馈形式(CFB),可用于种类密码
   明文X=(x0,x1,……,xn-1),当中xi由t个比特组成0  
第两种输出反馈方式(OFB),可用以连串密码
  
与CFB唯一分歧的是OFB是一贯取DES输出的t个比特,而不是取密文的t个比特,其他都与CFB相同。但它取的是DES的出口,所以它战胜了CFB的密文错误传播的弱项

③ 、第壹组数据D2与第贰组的加密结果C1异或之后的结果开始展览DES加密,获得第壹组密文C2

数据补位一般有NoPadding和PKCS7Padding(Java中是PKCS5Padding)填充方式,PKCS7Padding和PKCS5Padding实际只是讨论不雷同,依照有关质地表明:PKCS5Padding分明定义了加密块是8字节,PKCS7Padding加密快能够是1-255里边。可是封装的DES算法私下认可都以8字节,所以能够认为她们相同。数据补位实际是在数码不满8字节的翻番,才补偿到8字节的倍数的填写进程。

DES算法一般有五个关键点,第一个是加密形式,第二个是数据补位,加密形式的重点意义正是,加密算法是按块实行加密的,例如
DES ,是 64Bit 三个块的开始展览加密,正是每一回加密 七个字节,因而老是输入四个字节的当众输出多少个字节密文,假设是 十七个字节,那么分成多少个块依次展开加密,难点就应运而生在那边,假若公开是
1234567812345678,分块分别开始展览加密,那么加密的结果类似“C4132737962C519C
C4132737962C519C”,能够看来明文的原理,那正是 ECB
加密方式,密文能够看看明文的法则;为了消除那几个标题,有了任何的加密方式:CBC
加密形式(密码分组连接),CFB加密情势(密码反馈形式),OFB加密方式(输出反馈形式)CBC
是讲求给三个开首化的向量,然后将各类输出与该向量作运算,并将运算的结果作为下二个加密块的开首化向量,CFB
和 OFB
则不必要提供发轫化向量,直接将密码依然输出作为初始化向量举行演算;那样就防止了堂而皇之的法则出现在密文中;当然缺点是解密时需求保险密文的科学,假如互连网传输时爆发了一有些错误,则前边的解密结果就大概是不对的;(ECB格局仅影响传输错误的不胜块。密码算法基本上都是分组(按快)进行加密的,假使密文长度不是刚刚好能够开始展览分组,如何是好?只能举办填写。

加密字符串为为AAA,则补位为AAA55555;加密字符串为BBBBBB,则补位为BBBBBB22;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888.

     
密文分组链接格局,在CBC方式下,每一种明文组xi在加密前与先一组密文按位模二加后,再送到DES加密,CBC格局战胜了ECB情势报内组重的缺点,但鉴于明文组加密前与一组密文有关,由从前一组密文的不当会传播到下一组。
那是.NET封装的DES算法的暗许方式,它相比费力,加密步骤如下:

public override ICryptoTransform CreateEncryptor(byte[] rgbKey,
byte[] rgbIV)

NoPadding填充格局:算法本身不填充,比如.NET的padding提供了有None,Zeros格局,分别为不填充和填充0的办法。

加密算法常见的有ECB格局和CBC方式:
第壹种电子密本方式(ECB) 
     
ECB情势:电子密本格局,便是将数据依照几个字节一段展开DES加密或解密获得一段7个字节的密文只怕明文,最终一段不足八个字节,则补足八个字节(注意:那里就关乎到多少补位了)实行计算,之后根据顺序将计算机技术研究所得的数目连在一起即可,各段数据里面互不影响。将公开分成n个64比特分组,即使公开长度不是64比特的倍数,则在明文末尾填充适当数指标显明符号。对明文组用给定的密钥分别开始展览加密,行密文C=(C0,C1,……,Cn-1)个中Ci=DES(K,xi),i=0,1,…..,n-1。
那是Java封装的DES算法的暗许方式.
其次种密文分组链接方式(CBC)  

DES是一种对称加密(Data Encryption
Standard)算法,于一九七八年获取美利坚同盟友政坛的规范批准,是一种用512人密钥来加密六1七位数据的章程。一般密码长度为八个字节,其中五15个人加密密钥,每一个第⑦位都当做奇偶校验。

1、首先将数据遵照七个字节一组开展分组获得D1D2……Dn(若数据不是8的整数倍,就涉及到数量补位了)

伍 、按顺序连为C1C2C3……Cn即为加密结果。

相关文章