Имеется задача: подписать некий массив ключом при помощи RSA алгоритмом MD5 и потом проверить подпись.
На VB6 использую портированные функции CryptoApi, на .NET — RSACryptoServiceProvider. Нужно добиться того , чтобы валидацию можно было выполнять на обеих платформах.
Пара публичный/приватный ключ, выгруженный на диск при помощи CryptoApi, прекрасно загружается в RSACryptoServiceProvider.
А вот с проверкой подписи начинаются проблемы. Проверка выполняется успешно, если подписывать и проверять подпись на какой-то одной платформе — или VB, или .NET, а вот добиться портируемости не получается — валидация подписи, созданной при помощи CryptoApi, не проходит на .NET и наоборот. Пара ключей при этом используется одна и та же. 128-байтовые подписи одного и того же массива, подписанные одним и тем же ключом, но созданные на разных платформах, различаются.
С чем это может быть связано и от чего танцевать с дебаггером? Использует ли RSACryptoServiceProvider функции CryptoApi или у него своя реализация?