Changeset 1890


Ignore:
Timestamp:
Sep 1, 2010, 9:13:18 PM (11 years ago)
Author:
Sven Rech
Message:

fixed rsa keygen bug

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPluginBase/Miscellaneous/BigIntegerHelper.cs

    r1818 r1890  
    354354        }
    355355
     356
     357        /// <summary>
     358        /// Because it is often necessary to convert a reversed byte array to a positive BigInteger, without having a the highest significant bit
     359        /// set to zero for indicating the positiveness, this method can be used.
     360        /// </summary>
     361        /// <param name="p"></param>
     362        /// <returns></returns>
     363        public static BigInteger FromPositiveReversedByteArray(byte[] p)
     364        {
     365            byte[] b = new byte[p.Length+1];      //b has one more byte than p
     366            for (int i = 0; i < p.Length; i++)
     367                b[i] = p[p.Length-i-1];
     368            return new BigInteger(b);
     369        }
    356370    }
    357371}
  • trunk/CrypPlugins/RSA/RSAKeyGenerator.cs

    r1818 r1890  
    2626using System.Security.Cryptography.X509Certificates;
    2727using System.Numerics;
     28using System.Diagnostics;
    2829
    2930namespace Cryptool.Plugins.RSA
     
    5859        #endregion
    5960       
    60         #region envents
     61        #region events
    6162
    6263        public event Cryptool.PluginBase.StatusChangedEventHandler OnPluginStatusChanged;
     
    250251                        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    251252                        RSAParameters rsaParameters = rsa.ExportParameters(true);
    252                         p = new BigInteger(rsaParameters.P);
    253                         q = new BigInteger(rsaParameters.Q);
    254                         n = new BigInteger(rsaParameters.Modulus);
    255                         e = new BigInteger(rsaParameters.Exponent);
    256                         d = new BigInteger(rsaParameters.D);
     253                        p = BigIntegerHelper.FromPositiveReversedByteArray(rsaParameters.P);
     254                        q = BigIntegerHelper.FromPositiveReversedByteArray(rsaParameters.Q);
     255                        n = BigIntegerHelper.FromPositiveReversedByteArray(rsaParameters.Modulus);
     256                        Debug.Assert(BigIntegerHelper.IsProbablePrime(p));
     257                        Debug.Assert(BigIntegerHelper.IsProbablePrime(q));
     258                        Debug.Assert((p * q) == n);
     259                        e = BigIntegerHelper.FromPositiveReversedByteArray(rsaParameters.Exponent);
     260                        d = BigIntegerHelper.FromPositiveReversedByteArray(rsaParameters.D);
     261                        Debug.Assert((e * d) % ((p - 1) * (q - 1)) == 1);
    257262                    }
    258263                    catch (Exception ex)
Note: See TracChangeset for help on using the changeset viewer.