Ну, ребята, я пытаюсь зашифровать (на самом деле подписать) данные с использованием открытых и частных показателей и модулей. Это в C # .NET, и я не могу использовать RSACryptoServiceProvider
, потому что для этого нужны и простые числа, и другие элементы CRT.
Итак, я пытаюсь сделать следующее:
private Byte[] signData()
{
BigInteger biPrivEx = new BigInteger(this.privEx); // Those are byte[]
BigInteger biPubEx = new BigInteger(this.pubEx);
BigInteger biMod = new BigInteger(this.mod);
BigInteger cyph = BigInteger.ModPow(new BigInteger(pkcs11), biPrivEx, biMod); // This raise exception
return cyph.ToByteArray();;
}
Но проблема в том, что я получаю Out Of Range Exception
, потому что мой частный показатель отрицателен.
Что яделать неправильно?Или возможно легко восстановить ЭЛТ из этого?Или, может быть, есть ли лучший способ, как это сделать?В другой программе я могу сделать это с данными, которые я использую, поэтому у меня есть ссылка для проверки.