在我的工作中,我們正在進行加密以保護數據,並且數據由.NET Compact Framework加密,並且必須由常規.NET框架讀取一臺服務器。我們遇到了一個問題,即緊湊框架無法使用已知公鑰使用RSA加密(拋出異常)。服務器將公鑰傳遞給緊湊框架設備。下面是一個爲緊湊框架編寫的測試應用程序來展示問題。.NET Compact Framework中的RSA RSACryptoServiceProvider使用完整的.NET Framework中的公鑰
string mod =
"rgTcL0/ZK3j5Rt6CigEsfyLDiERh2PuVzmZVdHbb/2jQOG5JEcAqqBoscDZ4PwJR8aO19xNVTce7"
+ "vzbEued32z2PLAvCcHFKGtOgNEeZ+ZcD6uHobsKws76BdjBrI7Pigk2HSkak21n2WoVcBVHoRmcn"
+ "eX7DPaB4atamhkbLoRBF1VlautDfhX9lnOFA2zyZUCB5CproavKF6wl19pZne2Q4U1vMtBAA2Q9N"
+ "aZFsrj/KjE3UtYKvjd4Oy55Hmtpb5P3CZAVpiyCTKq3gTxDJn69giyctu428DgkKacmZ4yTvkLWB"
+ "Ym/zWtAf9o8pI+3MwgF7wzuK5ypGack3l4/Skw==";
string exp = "AQAB";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048);
RSAParameters p = new RSAParameters();
p.Modulus = Convert.FromBase64String(mod);
p.Exponent = Convert.FromBase64String(exp);
rsa.ImportParameters(p);
var bytes = rsa.Encrypt(System.Text.Encoding.ASCII.GetBytes("MIKE"), true);
這段代碼產生當「加密」方法被調用以下異常:
Framework: 3.5.7283.0
Exception: fOAEP
InnerException: Could not evaluate expression
Stack Trace:
at System.Security.Cryptography.RSACryptoServiceProvider.Encrypt
(Byte[] rgb, Boolean fOAEP)
有誰知道什麼我應該嘗試/怎麼辦?我用普通的.NET編寫了這個代碼,它工作得很好。我可以使用不同的實例進行加密和解密。任何幫助,將不勝感激。
謝謝!
你不加密()與公鑰,你Sign()。我猜這是問題所在。 – 2011-05-27 13:04:32
@亨克:其實,你是用公鑰加密的。您使用私鑰簽名。 (關鍵在於只有私鑰的持有者才能讀取加密數據,但任何人都可以驗證簽名。) – 2011-05-27 13:10:01
@ Nicole:你是對的,我是在讀睡覺。 – 2011-05-27 14:49:24