如何在Java中实现RSA加解密

如何在Java中实现RSA加解密,java,rsa,Java,Rsa,我的公钥和私钥生成工作正常。我的下一步是创建另外两个方法-加密和解密。我只是不确定如何实现加密和解密。我有一些想法,但似乎没有什么是一个好的解决办法。有什么见解吗 public class RSA { private final static BigInteger one = new BigInteger("1"); private final static SecureRandom random = new SecureRandom(); // prime numbe

我的公钥和私钥生成工作正常。我的下一步是创建另外两个方法-加密和解密。我只是不确定如何实现加密和解密。我有一些想法,但似乎没有什么是一个好的解决办法。有什么见解吗

public class RSA
{
    private final static BigInteger one = new BigInteger("1");
    private final static SecureRandom random = new SecureRandom();

    // prime numbers
    private BigInteger p;
    private BigInteger q;

    // modulus
    private BigInteger n;

    // totient
    private BigInteger t;

    // public key
    private BigInteger e;

    // private key
    private BigInteger d;

    /**
     * Constructor for objects of class RSA
     */
    public RSA(int N)
    {
        p = BigInteger.probablePrime(N/2, random);
        q = BigInteger.probablePrime(N/2, random);

        // initialising modulus
        n = p.multiply(q);

        // initialising t by euclid's totient function (p-1)(q-1)
        t = (p.subtract(one)).multiply(q.subtract(one));

        // initialising public key ~ 65537 is common public key
        e = new BigInteger("65537");
    }

    public int generatePrivateKey()
    {
         d = e.modInverse(t);
         return d.intValue();
    }
}

既然你还没有真正提出一个具体的问题,我就给你一个有点切题的答案

DIY加密有点像DIY核电


如果你想学习加密编码,我建议你阅读,并使用它,而不是自己动手。

因为你还没有真正问过一个具体的问题,我会给你一个有点切题的答案

DIY加密有点像DIY核电


如果你想学习加密编码,我建议你阅读,并使用它,而不是你自己的。

不确定你在问什么,但对于RSA加密,如果你的模数是n位宽,你的公钥也将是n位宽。简单的
int
不起作用

另请参见

我自己在Java中对RSA加密的拙劣尝试:

不确定您的要求,但对于RSA加密,如果您的模数为n位宽,则您的公钥也将为n位宽。简单的
int
不起作用

另请参见

我自己在Java中对RSA加密的拙劣尝试:

您的私钥生成功能可能会失败。作为练习,确定原因。提示:当prob=2/65537时,它将大约失败。另外,
d.intValue()
是一个无意义的量。您的私钥生成功能可能会失败。作为练习,确定原因。提示:当prob=2/65537时,它将大约失败。而且,
d.intValue()
是一个无意义的量。