zoukankan      html  css  js  c++  java
  • 整理密码学的系统性地基础知识(图解、密码原理、常用算法、openssl)

    1.   密码原理基础

    1.1.   对称密码

    说明:对称密码主要就是依据下面的”异或”运算实现加解密的,这里可以把数A假定为明文,数B假定为KEY,数C假定为密文。通过下面简单的异或运算,即可实现用同样的KEY将明文转换为密文,并将密文转换成明文了。另外也可以理解到实际使用时为什么要将对称密码算法和分组模式结合才能使用,因为多数对称密码(即分组类型的对称密码)能加密的明文长度是固定的,所以需要对明文进行分组迭代。

    数A  XOR  数B = 数C

    数C  XOR  数B = 数A

    1.2.   公钥密码(RSA)

    1.2.1.    RSA的加密解密

    1.2.2.    RSA中密钥对的生成

    (1)   求数N

    用伪随机数生成器求pqpq都是质数

    N = p * q

    (2)   求数L

    L = lcm(p-1, q-1);  lcm为求最小公倍数的函数

    (3)   求数E

    1 < E < L;

    gcd(E, L) = 1;  gcd为求最大公约数的函数

    (4)   求数D

    1 < D < L;

    E X D  mod L = 1;

     

    1.2.3.    实践

    Step1: 生成密钥对

    (1)   N

    准备两个质数,如p=17; q=19; N = p * q = 17 * 19 = 323;

    (2)   L

    L = lcm(p-1, q-1) = lcm(17-1, 19-1) = lcm(16, 18) = 144;

    (3)   E

    gcd(E, L) = 1;

    满足条件的E有很低,如5,7,11,13,17,19,23,25,29,31,…

    选择5作为E

    (4)   D

    E X D  mod L = 1

    D29可以满足上面的公式,因为E X D  mod L = 5 X 29 mod 144 = 145 mod 144 = 1;

    到这里我们已经生成了密钥对,即:

    公钥: E=5, N=323;

    私钥: D=29, N=323;

    Step2:

    要加密的明文必须是小于N的数,即小于323。假设要加密的明文为123 

    加密:明文E mod N = 1235 mod 323; 所以密文就是225

    解密: 密文D mod N = 22529 mod 323 = 123;

     

    2.   常见算法归类

    对称密码

    公钥密码

    数字签名

    aes128,aes192,aes256

    rsa

    rsa

    des,des-ede, des-ede3,3des,desx,

    ElGamal

    dsa

    rijindael,rijindael128,rijindael192,rijindael256

    Rabin

    ElGamal

    arcfour,arcfour128,arcfour256(流密码)

    ECC(椭圆曲线密码)

    Rabin

    blowfish

     

     

    cast128

     

     

    chacha20-poly1305(流密码,既可加密也可认证)

     

     

    chacha20(流密码)

     

     

    单向散列函数

    消息认证码

    密钥交换

    md4,md5

    hmac-sha-1

    diffie-hellman

    sha,sha1,sha224,sha256,sha384,sha512

    hmac-md5

    rsa

    whirlpool

    hmac-ripemd

     

    ripemd,ripemd-160

    poly1305

     

  • 相关阅读:
    MFC程序执行过程剖析
    不同位数操作系统的 数据长度
    测试:safenet提供的CheckKey函数 内存泄漏。具体来说是句柄.
    关于更改项目名称
    内存泄漏相关的
    美化MFC 之调整静态文本的颜色 字体。 用于添加公司标题 联系方式 口号等数据
    DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02)
    Removing Unnecessary HTTP Headers in IIS and ASP.NET 在ASP.Net和IIS中删除不必要的HTTP响应头
    Implementing Singleton in C#
    WEBAPI VS WCF微软随.NET 4.5发布新REST API框架
  • 原文地址:https://www.cnblogs.com/aimmiao/p/13187282.html
Copyright © 2011-2022 走看看