• 加密算法学习


    分类

    常用加密算法主要分两类,即对称加密和非对称加密
    对称加密算法有AES非对称加密算法有RSA和DSA(椭圆曲线)

    非对称加密

    RSA

    步骤 说明 描述 备注
    1 找出质数 P 、Q -
    2 计算公共模数 N = P * Q -
    3 欧拉函数 $$φ(N) = (P-1)(Q-1)$$ -
    4 计算公钥E 1 < E < φ(N) E的取值必须是整数E和 φ(N) 必须是互质数
    5 计算私钥D E * D % φ(N) = 1 $$ED-φ(N)Y=1$$ 扩展欧几里德算法
    6 加密 C = M E mod N C:密文 M:明文
    7 解密 M =C D mod N C:密文 M:明文
    1. 质数P=3,Q=11
    2. N=P*Q=3*11=33
    3. 欧拉函数$$φ(N)=(P-1)(Q-1)=2*10=20$$
    4. 公匙E: $$1 < E < φ(N)$$ $$E∈{3, 7, 9, 11, 13, 17, 19}$$, 取E=3 E与φ(N)互质
    5. 私匙 $$ED%φ(N)=1 3D%20=1 D=7$$扩展欧几里德
    6. 公匙加密$$M=3$$,密文$$C=M^EmodN$$ $$C=3^3%33=27$$
    7. 私匙解密$$M=C^DmodN$$ $$M=27^7%33=3$$

    椭圆曲线DSA

    1. Alice 向 Bob 发送两个质数 P 和 G
      P 是一个非常大的质数,G 是一个较小的数字,称为生成元。P 和 G 可以公开,P 和 G 的生成也可以由任何一方生成。
    2. Alice 生成一个随机数 A
      A 是 1~(P-2) 之间的整数。这个数只有 Alice 知道。
    3. Bob 生成一个随机数 B
      B 是 1~(P-2) 之间的整数。这个数只有 Bob 知道。
    4. Alice 把 (G^A mod P) 的结果发送给 Bob
      这个数被窃听了也没有关系。
    5. Bob 把 (G^B mod P) 的结果发送给 Alice
      这个数被窃听了也没有关系。
    6. Alice 用 Bob 发过来的数计算 A 次方并求 mod P
      这个数就是最终的共享密钥。
    (G^B mod P)^A mod P = G^(B*A) mod P 
                        = G^(A*B) mod P
    
    1. Bob 用 Alice 发过来的数计算 B 次方并求 mod P
      这个数就是最终的共享密钥。
    (G^A mod P)^B mod P = G^(A*B) mod P
    

    至此,A 和 B 计算出来的密钥是一致的。

    窃听者能获取到的信息有:P、G、G^A mod P、G^B mod P。通过这 4 个值想计算出 G^(A*B) mod P 是非常困难的。

    如果能知道 A 和 B 任意一个数,就可以破解上面所有步骤,并算出最后的共享密钥。但是窃听者只能获取到 G^A mod P、G^B mod P,这里的 mod P 是关键,如果是知道 G^A 也可以算出 A,但是这里是推算不出 A 和 B 的,因为这是有限域(finite field) 上的离散对数问题

    eg.

    x x
    Alice和Bob同意使用模数$$p=23$$和基数$$g=5$$(这是一个原始根模 23)。 $$p=23 g=5$$
    Alice选择一个秘密整数$$a=4$$,然后发送Bob $$A=g^amodp$$ $$A = 5^4 mod 23 = 4$$
    Bob选择一个秘密整数$$b=3$$,然后发送Alice $$B=g^bmodp$$ $$B = 5^3 mod 23 = 10$$
    Alice计算$$s=B^a mod p$$ $$s =10^4 mod23= 18$$
    Bob计算$$s=A^bmodp$$ $$s=4^3mod23=18$$

    对称加密

    AES

    AES加密主要分4步

    1. SubBytes 字节变换

    2. ShiftRows 移行操作

    3. MixColumns 混行操作

    4. AddRoundKey 异或运算

    解密为加密的逆过程

  • 相关阅读:
    单源最短路径-邻接表无向网络
    带权邻接表图的最小生成树
    邻接矩阵有向图的广度优先遍历
    邻接表无向图的深度优先遍历
    图基础-创造用于测试的简单图
    用EFCore从mssql数据库生成实体类
    使用EF Core访问SqlServer数据库
    哈夫曼树综合练习
    树形结构例--控制台显示文件夹结构
    Java之设计模式
  • 原文地址:https://www.cnblogs.com/quanee/p/11747045.html
Copyright © 2020-2023  润新知