[英]RSA Encryption in c# using Exponent, Modulus and Base as parameters
我有一個使用擴展程序來處理密碼的專有應用程序。 為了加密字符串,我將指數,模量,基數和字符串作為參數輸入。 它返回加密的字符串。
我需要能夠在與專有應用程序通信的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);
}
}
當我使用專有應用程序加密數據,然后嘗試使用上面的代碼時-生成的加密數據有所不同。
我對如何進行一無所知。
編輯; 每次運行時,它都會返回一個不同的字符串。 使用相同的輸入字符串。
如果我正確理解您的問題,那么GregS是正確的。 程序可以通過多種方式對密鑰和密文進行編碼。 不幸的是,如果您沒有擴展程序正在使用的協議或文件格式的規范,則必須對其進行反向工程。
您評論了程序每次運行都會返回不同的字符串這一事實。 這是RSA的屬性,實際上是任何公鑰加密原語。 確定性算法(即,在給定相同輸入的情況下始終返回相同輸出的非隨機算法)不能用作公鑰加密原語,因為它們很容易受到明文攻擊。
編輯:這意味着您對明文進行加密並將結果與模塊輸出進行比較的方法將不起作用。 相反,一旦您相信找到擴展模塊已散發出來的RSA輸出,請嘗試對其解密。
您的參數初始化有點奇怪。 您確定得到有效的模數結果(以下字節表示形式)嗎?
6E006F006E006F006E006F006D006F006E006F006D006E006F006D0066006F006F006E006F006E006D006F006
和指數:
6200
我認為它們是錯誤的,因為Unicode編碼具有特殊性。 您可能只是打錯了打字,想使用System.Text.Encoding。 UTF8 .GetBytes。
Modulus的結果將更好:
6E6F6E6F6E6F6D6F6E6F6D6E6F6D666F6F6E6F6E6D6F
但總的來說,我建議使用Base64進行鍵或鍵部分的傳輸,而不是UTF-8字符串。
另外,您不指定使用的密鑰大小。 默認為1024嗎?
因此,我建議嘗試使用UTF8並檢查密鑰大小。 希望對您有所幫助。
也許此鏈接對您也很有趣所有關於RSAParameters
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.