我有一个专有的应用程序,使用扩展来处理加密。要加密一个字符串,我将它作为参数提供指数,模数,基数和字符串。它返回加密的字符串。在c#中使用指数,模数和基地作为参数RSA加密
我需要能够在与专有应用程序交谈的c#应用程序中复制此功能。我不确定从哪里开始 - 希望您能给予的帮助。
这是我目前所拥有的;
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);
}
}
当我加密使用所述专用应用数据,然后尝试使用上述代码 - 将得到的加密的数据是不同的。
我不知如何进行。
编辑;它每次运行时都会返回一个不同的字符串。使用相同的输入字符串。
您需要显示您尝试匹配的扩展的代码。使用“Exponent,Modulus,Base和string”作为参数的加密会留下无限的可能性。对我们来说,尝试猜测是毫无意义的。你的Modulus和Exponent的C#代码有点难以置信。你从哪里弄到那些琴弦? – 2010-10-16 12:05:25