Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public BigInteger create_PublicKey(BigInteger p, BigInteger q, BigInteger secretkey, out BigInteger e)
- {
- Random zufall = new Random();
- // N
- BigInteger publickey = p * q;
- // e Teilerfremdheit zum secretkey beachten
- // Brüche kürzen
- for (;;)
- {
- BigInteger temp = zufall.Next(2, (int)secretkey);
- if (check_relativelyPrime(temp, secretkey))
- {
- e = temp;
- break;
- }
- }
- return publickey;
- }
- public BigInteger create_SecretKey(BigInteger p, BigInteger q)
- {
- BigInteger ps = p;
- BigInteger qs = q;
- // >(N)
- BigInteger secretkey = (p - 1) * (q - 1);
- return secretkey;
- }
- public BigInteger create_multiInversed(BigInteger e, BigInteger secKey)
- {
- BigInteger secret = secKey;
- BigInteger es = e;
- // d das multiplikative Inverse zu e mod >(N))
- BigInteger[] Result = Extended_GCD(es, secret);
- // Dursuchen nach dem Ergebnis, welches nicht negativ ist
- BigInteger rückgabe = 0;
- if (Result[1] < Result[2])
- rückgabe = (BigInteger)Result[2];
- else
- rückgabe = (BigInteger)Result[1];
- return rückgabe;
- }
- public BigInteger encodeOrValidate_Number(BigInteger number, BigInteger e, BigInteger N)
- {
- BigInteger number_BI = number, e_BI = e, N_BI = N, temp;
- temp = BigIntegerPow(number_BI, e_BI);
- temp = temp % N_BI;
- return (BigInteger)temp;
- }
- public BigInteger decodeOrSign_Number(BigInteger number, BigInteger d, BigInteger N)
- {
- BigInteger number_BI = number, d_BI = d, N_BI = N, temp;
- temp = BigIntegerPow(number_BI, d_BI);
- temp = temp % N_BI;
- return (BigInteger)temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment