美文网首页
RSA非对称加解密原理及示例代码

RSA非对称加解密原理及示例代码

作者: 十毛tenmao | 来源:发表于2021-06-19 23:16 被阅读0次

RSA非对称加解密可以实现安全传输,本文简单介绍一下其原理和实现代码

RSA加密算法

RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同的密钥,公钥加密、私钥解密(加密信息)或者私钥加密、公钥解密(证书)。

RSA算法原理

  • 加密
 密文 = 明文^E mod N
  • 解密
明文 = 密文^D mod N

其中(E, D, N)就是秘钥对,E(Encryption) 表示加密,D(Decryption) 表示解密,N(Number)表示加解密共同用到的大数

秘钥生成

  • 求N
N= p * q ;p,q为质数
  • 求L
L=lcm(p-1,q-1) ;L为p-1、q-1的最小公倍数
  • 求E
1 < E < L,gcd(E,L)=1;E,L最大公约数为1(E和L互质)
  • 求D
1 < D < L,E*D mod L = 1

演示算法(秘钥生成&加解密)

public class App {
    public static void main(String[] args) {
        //设置两个互质数的初始值,为了简化运算,设置为17和19
        long p = 17;
        long q = 19;
        
        //计算公钥对(E,N)
        long N = p * q;
        long L = ArithmeticUtils.lcm(p - 1, q - 1);
        long E = 0;
        for (int i = 2; i < L; i++) {
            if (ArithmeticUtils.gcd(i, L) == 1) {
                E = i;
                break;
            }
        }
        System.out.printf("公钥=(E, N) = (%d, %d)%n", E, N);

        //计算私钥对(D,N)
        long D = 0;
        for (int i = 2; i < L; i++) {
            if (E * i % L == 1) {
                D = i;
                break;
            }
        }
        System.out.printf("私钥=(D, N) = (%d, %d)%n", D, N);

        //使用秘钥对完成加解密,随机生成一个原文数字
        long src = (long) (new Random().nextDouble() * (N - 1));

        //加密后的密文
        long cipher = ArithmeticUtils.pow(src, (int) E) % N;

        //反向解密
        BigInteger pow = ArithmeticUtils.pow(BigInteger.valueOf(cipher), BigInteger.valueOf(D));
        int src2 = pow.mod(BigInteger.valueOf(N)).intValue();

        System.out.printf("加密:原文: %d, 密文= (原文的E次方) mod N = (%d ^ %d) mod %d=%d%n",
                src, src, E, N, cipher);

        System.out.printf("解密:密文: %d, 原文= (密文的D次方) mod N = (%d ^ %d) mod %d=%d%n",
                cipher, cipher, D, N, src2);
    }
}

参考

相关文章

  • RSA非对称加解密原理及示例代码

    RSA非对称加解密可以实现安全传输,本文简单介绍一下其原理和实现代码 RSA加密算法 RSA加密算法是一种非对称加...

  • RSA加解密

    RSA加解密技术详解 示例源码

  • Java 实现 RSA 加密

    本文介绍 RSA 加密的原理、示例、安全性分析及 Java 语言实现。 目录 RSA 简介原理示例安全性常见用途 ...

  • ios RSA加密

    看这篇文章基本上就会使用了,当然并不深入到原理RSA加解密 RSA是一种非对称加密,它有一对密钥,分别称为 公钥和...

  • RSA原理及OpenSSL中的实现(中)-- RSA原理与Op

    3年前,我以POJ2447作为切入点介绍了什么是非对称加解密,RSA加解密的步骤。然而RSA为什么可以用两个“风马...

  • RSA原理及应用学习小记

    RSA原理及应用 密码学发展,经理了很长了编码加密,到后来的对称加密, 及上世纪70年代后的非对称加密RSA RS...

  • iOS开发加解密算法-基础篇(4) RSA的加解密<

    一、突然发现少写了一个RSA - -#...,加解密原理参照RSA算法原理,常规的加解算法一般都是对称加密: (...

  • RSA公钥加密算法笔记

    RSA是目前最有影响力和常用的公钥加密算法 这篇笔记目的是梳理RSA算法加解密的证明思路RSA算法是一种非对称密码...

  • Java安全编程:RSA加密解密

    安全 RSA RSA是最常用非对称加密算法。常用于消息签名。它的加解密的密钥是成对出现的。使用私钥加密只能用对应的...

  • 2019-12-20

    RSA非对称加密技术(JAVA版实现加解密处理)介绍 非对称的加密技术就是指加密过程是不可逆,不能通过密文直...

网友评论

      本文标题:RSA非对称加解密原理及示例代码

      本文链接:https://www.haomeiwen.com/subject/weqjyltx.html