常用加密算法学习
1.加密分类
1.1对称加密
早期的加密类型,安全性较低。大体有:DES,DES3(或者叫做3DES),AES,RC2等
- DES相对时间最久,因为1977年被美国政府正式采纳,所以具体时间可以追溯到1977年以前
- AES加密于1998年提出,广泛使用大概在2006年左右。比如无线路由就可用该方式加密
.Net中对应的命名空间为:(部分)
AES: System.Security.Cryptography.AesCryptoServiceProvider
DES: System.Security.Cryptography.DESCryptoServiceProvider
RC2: System.Security.Cryptography.RC2CryptoServiceProvider
RijndaelManaged: System.Security.Cryptography.RijndaelManaged
1.2非对称加密
加密和解密时使用不同密钥,分为公钥和私钥。这样即使别人破解了密文但不知道私钥也就无法修改。大体有:DSA,RSA,D-H,ECDH(椭圆曲线)等
- RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
- DSA一般用于数字签名
- ECDH资料比较少,但似乎它的加密性相对最高
.Net中对应的命名空间为:(部分)
DSA: System.Security.Cryptography.DSA
RSA: System.Security.Cryptography.RSA
ECDH: System.Security.Cryptography.ECDiffieHellman
2.常用算法的使用介绍
具体加解密包来源于网络,可以基于.NET自身的进行完善。这里只介绍使用
2.1 AES
密钥长度为128/192/256位
初始化向量16个字节,key用32个字节
测试:
密文
"hellow world"
密钥
new string('h', 32)
加密结果:
39,249,2,51,67,184,116,198,8,184,38,78,63,214,223,196
解密:
hellow world
2.2 DES
Key和初始化向量都用8个字节
密文
"hellow world"
密钥
new string('h', 8)
加密结果:
236,32,72,25,145,219,140,175,102,86,40,208,86,65,144,154
解密:
hellow world
2.3 DES3
用法和DES一样,这里略过
2.4 RSA(非对称)
密文
"hellow world"
密钥
N/A(公钥,私钥均不使用OAEP填充的情况)
加密结果:
188,230,28,149,191,101,249,129,182,43,49,69,188,183,253,13,157,55,121,114,10,87,
244,158,38,213,31,128,221,213,182,65,179,131,186,94,73,165,161,5,61,163,60,217,5
8,113,211,143,186,86,127,96,247,155,10,16,200,163,193,150,80,111,152,163,156,131
,191,169,251,27,225,101,99,16,201,252,215,252,68,101,171,245,60,185,8,74,105,117
,79,200,100,80,180,40,135,129,44,26,18,3,190,37,241,225,172,133,197,206,37,198,8
8,89,205,167,186,21,216,135,202,190,184,88,32,194,210,85,212,231
解密:
hellow world
参考资料