常用加密算法介绍--DES
来源:互联网 发布:centos安装配置samba 编辑:程序博客网 时间:2024/05/16 14:35
原文链接:http://www.cnblogs.com/piyeyong/archive/2010/06/25/1765407.html
一.DES
对称算法
1.key的大小
KEY64bit,IV(初始化向量)64bit,block size(每次运算处理的字节数)64bit,key的实际使用时56bit,每个字节的最后一位是校验位,不参与计算
2.加密模式
既可以block cipher(分组加密,ECB模式),也可以productcipher(乘积加密,CBC模式)。
分组加密就是每组分别加密,如果明文相同,得到的密文也会相同,乘积加密就是将上一次运算得到的结果,也就是密文,也参与到下一次运算当中,这样即使两个分组明文相同,得到的密文也不一样,计算第一组的时候就需要使用到IV了。显然CBC模式更安全一些。
3.Padding
明文如果不是block size的整数倍,最后一组就不能运算,因此在加密前需要进行padding,常用的PKCS7的padding,是将需要填充的字节数作为填充值,为了消除歧义,即使明文字节数正好是8的倍数,需要填充8个字节的0x08
4.例子
可能运行结果:
=============================================
DefaultAlgorithm info:
System.Security.Cryptography.DESCryptoServiceProvider
Mode:CBC
Padding:PKCS7
KeySize:64
BlockSize:64
IV:79 5D 7A E4 22 10 39 F2[8]
Key:77 FF 02 7F 98 6F B6 46[8]
ModifyAlgorithm info:
System.Security.Cryptography.DESCryptoServiceProvider
Mode:ECB
Padding:PKCS7
KeySize:64
BlockSize:64
IV:30 15 B1 29 38 99 CC 36[8]
Key:18 0D 84 44 18 4B 61 61[8]
Plaintext:
30 31 32 33 34 35 36 37 30 31 32 33 3435 36 37 30 31 32 33 34 35 36 37
30 31 3233 34 35 36 37[32]
Encryptedtext:
27 9B 21 8D 77 18 AB 53 27 9B 21 8D 7718 AB 53 27 9B 21 8D 77 18 AB 53
27 9B 218D 77 18 AB 53 4F 4B D6 D7 68 18 A4 FA[40]
Decryptedtext:
30 31 32 33 34 35 36 37 30 31 32 33 3435 36 37 30 31 32 33 34 35 36 37
30 31 3233 34 35 36 37[32]
可以看出:
模式使用比较安全的CBC模式,padding用PKCS7,原文32字节也需要填充,加密后的密文是40字节,使用ECB模式时,相同的分组得到相同的密文
将模式改为CBC后的可能运行结果:
=============================================
DefaultAlgorithm info:
System.Security.Cryptography.DESCryptoServiceProvider
Mode:CBC
Padding:PKCS7
KeySize:64
BlockSize:64
IV:34 42 42 52 AC 9F D6 2A[8]
Key:29 98 61 4F 14 2C 5E A1[8]
ModifyAlgorithm info:
System.Security.Cryptography.DESCryptoServiceProvider
Mode:CBC
Padding:PKCS7
KeySize:64
BlockSize:64
IV:35 C5 78 6D D8 54 BB 1D[8]
Key:DC 73 23 E1 E3 78 42 84[8]
Plaintext:
30 31 32 33 34 35 36 37 30 31 32 33 3435 36 37 30 31 32 33 34 35 36 37
30 31 3233 34 35 36 37[32]
Encryptedtext:
65 67 16 2F 53 D9 FC 4A 02 6F CE C8 40B8 9C 40 C7 5F BF A8 38 62 05 E3
20 52 4AD7 5B AD 5E D1 5F CC D4 C3 C9 F1 97 53[40]
Decryptedtext:
30 31 32 33 34 35 36 37 30 31 32 33 3435 36 37 30 31 32 33 34 35 36 37
30 31 3233 34 35 36 37[32]
- 常用加密算法介绍--DES
- 常用对称加密算法-DES
- DES、AES、RSA等常用加密算法介绍与比较
- DES、AES、RSA等常用加密算法介绍与比较
- 对称加密算法之DES介绍
- 常用加密算法介绍
- 常用的加密算法介绍
- 常用的加密算法介绍
- 常用加密算法介绍--DES3
- 常用加密算法介绍
- 常用加密算法介绍--DES3
- DES加密算法
- DES加密算法
- DES 加密算法
- DES加密算法
- DES加密算法
- DES 加密算法
- DES 加密算法
- Android中Calendar类的用法总结
- 泛型上下限与比较
- AtomicInteger类的理解与使用
- React中的PropTypes是啥意思哇
- 【转载】 使用Jlink作为电源为Open1081开发板供电
- 常用加密算法介绍--DES
- Python程序和Flask框架中使用SQLAlchemy的教程
- Struts2之文件上传(单文件/多文件)
- C语言中volatile、register、const、static、extern、 auto关键字的作用
- OpenCV 3.1 StereoBM 获取正确视差Dispariy
- ubuntu16.04安装mentuhost详细教程和问题的解决方法
- php打印输出空格以及echo中.和,的区别
- IOS 导航栏添加事件
- 修改Apache配置日志输出,减轻访问压力