// получить ключи с помощью бекдора 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; }
// внедрить бекдор 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; }