Guest User

Untitled

a guest
Sep 12th, 2013
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.13 KB | None | 0 0
  1. public BigInteger create_PublicKey(BigInteger p, BigInteger q, BigInteger secretkey, out BigInteger e)
  2.         {
  3.             Random zufall = new Random();
  4.          
  5.             // N
  6.             BigInteger publickey = p * q;
  7.  
  8.             // e Teilerfremdheit zum secretkey beachten
  9.             // Brüche kürzen
  10.             for (;;)
  11.             {
  12.                 BigInteger temp =  zufall.Next(2, (int)secretkey);
  13.                 if (check_relativelyPrime(temp, secretkey))
  14.                 {
  15.                     e = temp;
  16.                     break;
  17.                 }
  18.             }
  19.  
  20.             return publickey;
  21.         }
  22.  
  23.  
  24.         public BigInteger create_SecretKey(BigInteger p, BigInteger q)
  25.         {
  26.             BigInteger ps = p;
  27.             BigInteger qs = q;
  28.  
  29.             // >(N)
  30.             BigInteger secretkey = (p - 1) * (q - 1);
  31.          
  32.             return secretkey;
  33.         }
  34.  
  35.         public BigInteger create_multiInversed(BigInteger e, BigInteger secKey)
  36.         {
  37.             BigInteger secret = secKey;
  38.             BigInteger es = e;
  39.  
  40.             // d das multiplikative Inverse zu e mod >(N))
  41.             BigInteger[] Result = Extended_GCD(es, secret);
  42.  
  43.             // Dursuchen nach dem Ergebnis, welches nicht negativ ist
  44.             BigInteger rückgabe = 0;
  45.  
  46.             if (Result[1] < Result[2])
  47.                 rückgabe = (BigInteger)Result[2];
  48.             else
  49.                 rückgabe = (BigInteger)Result[1];
  50.  
  51.             return rückgabe;
  52.         }
  53.  
  54.  
  55.         public BigInteger encodeOrValidate_Number(BigInteger number, BigInteger e, BigInteger N)
  56.        
  57.         {
  58.             BigInteger number_BI = number, e_BI = e, N_BI = N, temp;
  59.  
  60.             temp = BigIntegerPow(number_BI, e_BI);
  61.             temp = temp % N_BI;
  62.  
  63.             return (BigInteger)temp;
  64.         }
  65.  
  66.         public BigInteger decodeOrSign_Number(BigInteger number, BigInteger d, BigInteger N)
  67.         {
  68.             BigInteger number_BI = number, d_BI = d, N_BI = N, temp;
  69.  
  70.             temp = BigIntegerPow(number_BI, d_BI);
  71.             temp = temp % N_BI;
  72.  
  73.             return (BigInteger)temp;
  74.         }
Advertisement
Add Comment
Please, Sign In to add comment