manbetx官方网站

.NET中之DES对如加密。.NET中之DES对如加密。

九月 30th, 2018  |  manbet体育登录

DES是平种对如加密(Data Encryption
Standard)算法,于1977年取美国政府之规范认可,是千篇一律种植用56各类密钥来加密64各类数据的法门。一般密码长度也8单字节,其中56各加密密钥,每个第8个都作为奇偶校验。

DES是一样种对如加密(Data Encryption
Standard)算法,于1977年收获美国政府之正经批准,是一致种植用56各密钥来加密64各数据的方式。一般密码长度为8只字节,其中56员加密密钥,每个第8位还看作奇偶校验。

DES算法一般有星星点点个基本点点,第一单凡是加密模式,第二单是数补位,加密模式之显要意义就是是,加密算法是按部就班块进行加密的,例如
DES ,是 64Bit 一个片的拓展加密,就是历次加密 8
只字节,因此老是输入八独字节的明输出八个字节密文,如果是 16
单字节,那么分成两只片依次展开加密,问题虽起在此处,如果公开是
1234567812345678,分块分别展开加密,那么加密的结果类似“C4132737962C519C
C4132737962C519C”,可以观看明文的法则,这就是是 ECB
加密模式,密文可以见到明文的规律;为了解决是题目,有了另的加密模式:CBC
加密模式(密码分组连接),CFB加密模式(密码反馈模式),OFB加密模式(输出反馈模式)CBC
是讲求为一个初始化的往量,然后用每个输出和拖欠往量作运算,并拿运算的结果作下一个加密块的初始化向量,CFB
和 OFB
则免需提供初始化向量,直接用密码要输出作为初始化向量进行演算;这样虽避免了公开的规律起在密文中;当然缺点是解密时用确保密文的是,如果网络传输时生了平等有错误,则后面的解密结果虽可能是一无是处的;(ECB模式仅影响传输错误的那个块。密码算法基本上都是分组(按快)进行加密的,如果密文长度不是刚好可以展开分组,怎么收拾?只能进展填。

  DES算法一般生一定量个根本点,第一单凡是加密模式,第二只是数额补位,加密模式的主要意义就是,加密算法是按部就班块进行加密的,例如
DES ,是 64Bit 一个块的进展加密,就是每次加密 8
个字节,因此老是输入八单字节的当众输出八只字节密文,如果是 16
独字节,那么分成两独片依次展开加密,问题即使应运而生在此地,如果公开是
1234567812345678,分块分别进行加密,那么加密的结果类似”C4132737962C519C
C4132737962C519C”,可以视明文的原理,这虽是 ECB
加密模式,密文可以望明文的法则;为了化解这题目,有了其余的加密模式:CBC
加密模式(密码分组连接),CFB加密模式(密码反馈模式),OFB加密模式(输出反馈模式)CBC
是讲求于一个初始化的通往量,然后拿每个输出及拖欠于量作运算,并将运算的结果作为下一个加密块的初始化向量,CFB
和 OFB
则无欲提供初始化向量,直接将密码或输出作为初始化向量进行演算;这样即便避免了堂而皇之的原理起于密文中;当然缺点是解密时需保证密文的正确,如果网络传输时发出了一如既往有些错误,则后面的解密结果就可能是谬误的;(ECB模式仅影响传输错误的那个块。密码算法基本上都是分组(按快)进行加密的,如果密文长度不是刚刚好得拓展分组,怎么处置?只能进行填写。

加密算法常见的有ECB模式及CBC模式:
先是种电子密本方式(ECB) 
     
ECB模式:电子密本方式,就是将数据论8单字节一截进展DES加密或解密得到同段8独字节的密文或者明文,最后一段子不足8个字节,则补足8单字节(注意:这里虽涉及到数补位了)进行测算,之后以顺序以计所得之数码连在一起即可,各段数据里面互不影响。将公开分成n个64比较仅仅分组,如果公开长度不是64较不过的翻番,则以明文末尾填充适当数目的规定符号。对明文组用给定的密钥分别展开加密,行密文C=(C0,C1,……,Cn-1)其中Ci=DES(K,xi),i=0,1,…..,n-1。
这是Java封装的DES算法的默认模式.
亚种植密文分组链接方式(CBC)  

  加密算法常见的有ECB模式和CBC模式:

     
密文分组链接道,在CBC方式下,每个明文组xi在加密前跟先期一组密文按位模二加后,再送至DES加密,CBC方式克服了ECB方式报内组重的先天不足,但由明文组加密前与平等组密文有关,因此前一组密文的失实会传来到下同样组。
这是.NET封装的DES算法的默认模式,它于辛苦,加密步骤如下:

  第一种电子密本方式(ECB)

1、首先用数据论8个字节一组进行分组得到D1D2……Dn(若数据未是8的平头加倍,就干到数码补位了)

  ECB模式:电子密本方式,就是将数据论8单字节一截展开DES加密或解密得到同段8只字节的密文或者明文,最后一段子不足8个字节,则补足8单字节(注意:这里就是涉嫌到数补位了)进行计算,之后以顺序以计所得之数据连在一起即可,各段数据里互不影响。将公开分成n个64比较仅分组,如果公开长度不是64较才的翻番,则以明文末尾填充适当数目的规定符号。对明文组用给定的密钥分别开展加密,行密文C=(C0,C1,……,Cn-1)其中Ci=DES(K,xi),i=0,1,……,n-1.
这是Java包裹的DES算法的默认模式。

2、第一组数D1与向量I异或后底结果开展DES加密得到第一组密文C1(注意:这里发生往量I的布道,ECB模式下并未动于量I)

  第二种植密文分组链接方式(CBC)

3、第二组数D2与第一组的加密结果C1异或之后的结果开展DES加密,得到第二组密文C2

  密文分组链接方式,在CBC方式下,每个明文组xi在加密前和事先一组密文按位模二加后,再送及DES加密,CBC方式克服了ECB方式报内组重的短处,但出于明文组加密前以及同组密文有关,因此前一组密文的荒唐会传播到下一致组。
这是。NET封装的DES算法的默认模式,它比较麻烦,加密步骤如下:

4、之后的多寡因此类推,得到Cn

  1、首先将数据以8只字节一组进行分组得到D1D2……Dn(若数据未是8底平头倍,就关乎到数量补位了)

5、按顺序并为C1C2C3……Cn即为加密结果。

  2、第一组数D1与向量I异或后的结果开展DES加密得到第一组密文C1(注意:这里发出于量I的传教,ECB模式下没使于量I)

其三栽密文反馈方式(CFB),可用于序列密码
   明文X=(x0,x1,……,xn-1),其中xi由t个比较特组成0  
第四种植输出反馈方式(OFB),可用来序列密码
  
与CFB唯一不同之是OFB是直取DES输出的t个比特,而无是取密文的t个比特,其余都与CFB相同。但其抱之是DES的出口,所以它克服了CFB的密文错误传播之老毛病

  3、第二组数据D2与第一组的加密结果C1异或以后的结果开展DES加密,得到第二组密文C2

数据补位一般发生NoPadding和PKCS7Padding(Java中凡PKCS5Padding)填充方式,PKCS7Padding和PKCS5Padding实际只有是协商不相同,根据有关材料说明:PKCS5Padding明确定义了加密畈是8字节,PKCS7Padding加密快得是1-255间。但是封装的DES算法默认都是8字节,所以可以认为他们一样。数据补位实际是以数不满8字节底倍数,才补偿及8字节的翻番的填过程。

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

NoPadding填充方式:算法本身不填充,比如.NET的padding提供了来None,Zeros方式,分别吗无填和填充0的不二法门。

  5、按顺序并为C1C2C3……Cn即为加密结果。

PKCS7Padding(PKCS5Padding)填充方式:为.NET和Java的默认填充方式,对加密数字节长度对8取余为r,如r大于0,则补8-r只字节,字节为8-r底值;如果r等于0,则上8个字节8.比如:

  第三栽密文反馈方式(CFB),可用以序列密码

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

  明文X=(x0,x1,……,xn-1),其中xi由t个比较特组成0  
第四栽输出反馈方式(OFB),可用于序列密码

.NET中的DES加密

  与CFB唯一不同的凡OFB是一直取DES输出的t个比特,而非是取密文的t个比特,其余都同CFB相同。但她获之凡DES的输出,所以其克服了CFB的密文错误传播之缺陷

对于.NET,框架在System.Security.Cryptography命名空间下提供了DESCryptoServiceProvider作为System.Security.Cryptography.DES加密解密之卷入接口,它提供了如下的4单主意:

  数据补位一般发生NoPadding和PKCS7Padding(Java惨遭凡PKCS5Padding)填充方式,PKCS7Padding和PKCS5Padding实际只是协议未一致,根据有关材料说明:PKCS5Padding明确定义了加密片是8字节,PKCS7Padding加密快好是1-255中间。但是封装的DES算法默认都是8字节,所以可以认为他们一致。数据补位实际是在数据不满8字节底翻番,才补偿到8字节的倍数的填写过程。

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

  NoPadding填充方式:算法本身不填充,比如。NET的padding提供了发None,Zeros方式,分别吗免填和填充0的计。

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

  PKCS7Padding(PKCS5Padding)填充方式:为。NET和Java的默认填充方式,对加密数据字节长度对8取余为r,如r大于0,则补8-r个字节,字节为8-r之价;如果r等于0,则补充8单字节8.比如:

public override void GenerateIV()

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

public override void GenerateKey()

  .NET中的DES加密

从.NET像样库封装情况,加解密需要传入一个Key和IV向量。而且Key必须为8字节的数目,否则会一直抛大出,当用ECB模式下,不管传入什么IV向量,加密结果尚且同样。

  对于。NET,框架在System.Security.Cryptography命名空间下提供了DESCryptoServiceProvider作为System.Security.Cryptography.DES加密解密之包裹接口,它提供了如下的4独法子:

 

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

每大语言互操作解决方案:

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

  • C与C#通讯加密之C语言DES的cbc
    pkcs7的贯彻
  • C与C#报导加密之C语言DES的cbc
    pkcs7的实现(二)
  • python和c#通用一致的des加密应用CBC和PKCS7
  • php实现3DES加密算法,工作模式CBC,填充模式PKCS7
    Padding
  • 用 Java 解密 C#
    加密的数额(DES)
  • Applied Crypto++: Block
    Ciphers 

  public override void GenerateIV()

  public override void GenerateKey()

  从。NET类库封装情况,加解密需要传入一个Key和IV向量。而且Key必须也8字节底数目,否则会直接扔大出,当用ECB模式下,不管传入什么IV向量,加密结果尚且一样。

相关文章

标签:

Your Comments

近期评论

    功能


    网站地图xml地图