예제 #1
0
        // получить ключи с помощью бекдора
        public void ExtractKeysFromBackdoor(RsaKeyParameters _key)
        {
            //RsaKeyParameters _key = new RsaKeyParameters(false, N, e);
            byte[] payload     = RsaBackdoor.ExtractPayload(_key);
            var    restoredKey = RsaBackdoor.BuildKeyFromPayload(payload);

            e    = ((RsaKeyParameters)restoredKey.Public).Exponent;
            N    = ((RsaKeyParameters)restoredKey.Public).Modulus;
            p    = ((RsaPrivateCrtKeyParameters)restoredKey.Private).P;
            q    = ((RsaPrivateCrtKeyParameters)restoredKey.Private).Q;
            dp   = ((RsaPrivateCrtKeyParameters)restoredKey.Private).DP;
            dq   = ((RsaPrivateCrtKeyParameters)restoredKey.Private).DQ;
            qinv = ((RsaPrivateCrtKeyParameters)restoredKey.Private).QInv;
        }
예제 #2
0
        // внедрить бекдор
        public void InsertBackdoor()
        {
            byte[] seed, payload;
            RsaBackdoor.MakeSeedAndPayload(out seed, out payload);
            var randomKeyPair = RsaBackdoor.BuildKey(seed, payload);

            key  = randomKeyPair;
            e    = ((RsaKeyParameters)randomKeyPair.Public).Exponent;
            N    = ((RsaKeyParameters)randomKeyPair.Public).Modulus;
            p    = ((RsaPrivateCrtKeyParameters)randomKeyPair.Private).P;
            q    = ((RsaPrivateCrtKeyParameters)randomKeyPair.Private).Q;
            dp   = ((RsaPrivateCrtKeyParameters)randomKeyPair.Private).DP;
            dq   = ((RsaPrivateCrtKeyParameters)randomKeyPair.Private).DQ;
            qinv = ((RsaPrivateCrtKeyParameters)randomKeyPair.Private).QInv;
        }