常用加密算法学习

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


 

 

 


 

参考资料

维基百科:数据加密标准

加密解密概述及.NET中对加密解密的支持(二)

常用加解密方法汇总 工具

posted @ 2016-01-29 11:39  HONT  阅读(1715)  评论(0编辑  收藏  举报