⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsakeypairgenerator.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   RSAKeyPairGenerator.java

package org.bouncycastle.crypto.generators;

import java.math.BigInteger;
import org.bouncycastle.crypto.*;
import org.bouncycastle.crypto.params.*;

public class RSAKeyPairGenerator
	implements AsymmetricCipherKeyPairGenerator
{

	private static BigInteger ONE = BigInteger.valueOf(1L);
	private RSAKeyGenerationParameters param;

	public RSAKeyPairGenerator()
	{
	}

	public void init(KeyGenerationParameters param)
	{
		this.param = (RSAKeyGenerationParameters)param;
	}

	public AsymmetricCipherKeyPair generateKeyPair()
	{
		int pbitlength = (param.getStrength() + 1) / 2;
		int qbitlength = param.getStrength() - pbitlength;
		BigInteger e = param.getPublicExponent();
		BigInteger p;
		do
			p = new BigInteger(pbitlength, 1, param.getRandom());
		while (p.mod(e).equals(ONE) || !p.isProbablePrime(param.getCertainty()) || !e.gcd(p.subtract(ONE)).equals(ONE));
		BigInteger q;
		BigInteger n;
		do
		{
			do
				q = new BigInteger(qbitlength, 1, param.getRandom());
			while (q.equals(p) || q.mod(e).equals(ONE) || !q.isProbablePrime(param.getCertainty()) || !e.gcd(q.subtract(ONE)).equals(ONE));
			n = p.multiply(q);
			if (n.bitLength() == param.getStrength())
				break;
			p = p.max(q);
		} while (true);
		BigInteger phi;
		if (p.compareTo(q) < 0)
		{
			phi = p;
			p = q;
			q = phi;
		}
		BigInteger pSub1 = p.subtract(ONE);
		BigInteger qSub1 = q.subtract(ONE);
		phi = pSub1.multiply(qSub1);
		BigInteger d = e.modInverse(phi);
		BigInteger dP = d.remainder(pSub1);
		BigInteger dQ = d.remainder(qSub1);
		BigInteger qInv = q.modInverse(p);
		return new AsymmetricCipherKeyPair(new RSAKeyParameters(false, n, e), new RSAPrivateCrtKeyParameters(n, e, d, p, q, dP, dQ, qInv));
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -