У меня есть проприетарное приложение, которое использует расширение для обработки криптографии.Чтобы зашифровать строку, я передаю ее в качестве параметров: экспоненту, модуль, базу и строку.Он возвращает зашифрованную строку.
Мне нужно иметь возможность реплицировать эту функцию в приложении ac #, которое общается с проприетарным приложением.Я не уверен, с чего начать - и был бы признателен за любую помощь, которую вы можете оказать.
Это то, что у меня есть в данный момент;
public class Cryptography
{
public static RSACryptoServiceProvider rsa;
public static void AssignParameter()
{
const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "SpiderContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
//cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
rsa = new RSACryptoServiceProvider(cspParams);
}
public static string Sencrypt(string input)
{
RSAParameters parameters = new RSAParameters();
parameters.Modulus = System.Text.Encoding.Unicode.GetBytes("nononomonomnomfoononmo");
parameters.Exponent = System.Text.Encoding.Unicode.GetBytes("b");
rsa.ImportParameters(parameters);
byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(input);
byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
//return enc.GetString(cipherbytes);
return Convert.ToBase64String(cipherbytes);
}
}
Когда я шифрую данные с использованием проприетарногоприложения, а затем попробуйте использовать приведенный выше код - результирующие зашифрованные данные отличаются.
Я не знаю, как поступить.
edit;Он возвращает новую строку при каждом запуске.Используя ту же строку ввода.