zoukankan      html  css  js  c++  java
  • 常用加密算法学习

    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中对加密解密的支持(二)

    常用加解密方法汇总 工具

  • 相关阅读:
    201521123051 《Java程序设计》 第二周学习总结
    201521123001《Java程序设计》第11周学习总结
    201521123001《Java程序设计》第12周学习总结
    201521123001《Java程序设计》第11周学习总结
    201521123001《Java程序设计》第10周学习总结
    201521123001《Java程序设计》第9周学习总结
    201521123001《Java程序设计》第8周学习总结
    201521123001《Java程序设计》第7周学习总结
    201521123001《Java程序设计》第6周学习总结
    201521123001《Java程序设计》第5周学习总结
  • 原文地址:https://www.cnblogs.com/hont/p/5168485.html
Copyright © 2011-2022 走看看