栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RSA加密与解密

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RSA加密与解密

  • 实验目的

熟悉RSA加解密算法的运行过程,加深对素数筛选和使用的理解。

二、 实验步骤

随机生成大素数p和q

计算公开的模数r=pq

计算欧拉函数(r)=(p-1)(q-1)

随机选取整数e,满足gcd(e,(r))=1,若不满足则再次生成

计算d,满足d*e=1mod(r)

将明文x(0

将密文y按模为r自乘d次幂得到明文x

三、 算法实现

import java.math.BigInteger;

import java.util.Random;

import java.util.Scanner;

public class RSA {

  private  Random r;

  private final BigInteger one;

  private  BigInteger p;

  private  BigInteger q;

  private  BigInteger n;

  private  BigInteger phi;

  private BigInteger e;

  private final BigInteger d;

  public RSA() {

    r = new Random();

    one = new BigInteger("1");

    p = BigInteger.probablePrime(256, r);

    q = BigInteger.probablePrime(256, r);

    n = p.multiply(q);

    phi = p.subtract(one).multiply( q.subtract(one));

    e = new BigInteger(phi.bitLength(), r);

    while (e.compareTo(one) <= 0 || !phi.gcd(e).equals(one) || e.compareTo(phi) >= 0) {

      e = new BigInteger(phi.bitLength() - 1, r);

    }

    d = e.modInverse(phi);

  }

  public static void main(String[] args) {

    RSA rsa = new RSA();

    Scanner sc=new Scanner(System.in);

    System.out.println("请输入明文m:");

    String mezua = sc.next();

    System.out.print("密文:");

    System.out.println(rsa.zifratu(mezua));

    String ma=rsa.deszifratu( rsa.zifratu(mezua)).toString();

    System.out.print("解密密文:");

    for(int i=0;i<=ma.length()-2;i+=2) {

    int num=Integer.parseInt(ma.substring(i,i+2));

    System.out.print((char)num);

    }

  }

  private BigInteger zifratu(String mezua) {

    String mezua2ascii = "";

    for(int i=0; i

    BigInteger message = new BigInteger(mezua2ascii);

    return message.modPow(e, n);

  }

  private BigInteger deszifratu( BigInteger ciphertext) {

    return ciphertext.modPow(d, n);

  }

}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号