zoukankan      html  css  js  c++  java
  • 非对称加密-RSA算法

    非对称加密-RSA算法

    非对称

    传统算法是对称加密,共用密钥,非对称加密就使用了两个秘钥,一个公钥加密,一个私钥解密。

    加密过程

    1. 随机选取两个质数 p,q
    2. 计算公共模数 n = p*q
    3. 欧拉函数 φ(n) = (p-1) * (q-1)
    4. 计算公钥 e < φ(n),二者互质
    5. 计算私钥 d 使得 e * d % φ(n) = 1
    6. 公钥使用(e,n)私钥使用(d,n)
    7. 公钥加密 c = m^e mod n(m是原文内容,c是加密后的内容)
    8. 私钥解密 m = c^d mod n

    代码

    至于RSA算法为什么有效,这些比较专业的我不是太了解,我只了解了大概用法。
    我这里只写了一个帮助理顺思路的模拟代码,真的要用的话建议使用官方的代码。

      public static void rsa() {
        int p = 3;
        int q = 11;
    
        int n = p * q;
    
        //假装q就是那个符号
        int qn = (p - 1) * (q - 1);
    
        //公钥私钥
        int e = 3;
        int d = 7;
    
        //原文
        int m = 9;
    
        //加密后的
        int c = (int) (Math.pow(m, e) % n);
        System.out.println(c);
    
        //解密后的
        int m1 = (int) (Math.pow(c, d) % n);
        System.out.println(m1);
        
        if (m == m1) {
          System.out.println("解密成功");
        }
      }
    
  • 相关阅读:
    转载:MyBatis获取插入记录的自增长字段值
    006---抽象类
    005---组合
    004---继承与派生
    003---属性查找和绑定方法
    002---类与对象
    001---面向对象和面向过程的区别
    017---Django的中间件解决跨域
    10---git安装
    007---归并排序
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12346460.html
Copyright © 2011-2022 走看看