我想寫我自己的RSA加密器沒有libaries!如何在RSA中加密?
代碼:
import java.util.Random;
public class Main {
public static void main(String[] args) {
System.out.println(createPrime());
}
private static byte encrypt(byte message) {
double p = createPrime();
double q = createPrime();
double e = 2^new Random().nextInt(100) % (p * q);
byte ciphered = Math.pow(message, e);
return ciphered;
}
private static double createPrime() {
double testPow;
do {
int test = new Random().nextInt(20);
int power = new Random().nextInt(20);
test += 1;
power +=1;
testPow = Math.pow(test, power);
System.out.println("Double Math.pow: " + testPow);
} while (!testPrime(testPow));
return testPow;
}
private static Boolean testPrime(Double test) {
int factor = 2;
int lastFactor = 1;
while (test > 1) {
if (test % factor == 0) {
lastFactor = factor;
test /= factor;
while (test % factor == 0) {
test /= factor;
}
}
factor++;
}
Boolean isPrime = false;
if (test == lastFactor) {
isPrime = true;
}
return isPrime;
}
}
這就是我對加密。我不知道我應該怎麼做才能糾正這個問題,但在嘗試這些之前,我已經手動完成了這項工作。
所以我知道加密方程是 C =立方公尺E(mod N)的 和解密 M = C^d(mod N)的
其中p,q是素數 - m是消息 - c的密文 - e是N個歐拉 - N是p乘以q - N個歐拉是(p-1)(q-1)
任何幫助理解
它的功課,以及不是真的......但讓我們假裝是因爲我想學這個... – Zeveso 2011-02-26 21:14:57
@ user516664你可以看看java代碼。它是開源的。 – Bozho 2011-02-26 21:15:53