2011-01-22 59 views
1

以下是在服務器端我試圖過使用公鑰解密字節在asp.net

byte[] b; 
b = Request.BinaryRead(178); 
string encodedbytes = new System.Text.UTF8Encoding().GetString(b); 
b = Convert.FromBase64String(encodedbytes); 
Debug.WriteLine("decrypted bytes:" + new System.Text.UTF8Encoding().GetString(b)); 
// The path to the certificate. 
string Certificate = @"c:\certs\lafa801114sd3.cer"; 

//// Load the certificate into an X509Certificate object. 
X509Certificate cert = new X509Certificate(Certificate); 
RSACryptoServiceProvider publicprovider = (RSACryptoServiceProvider)CertUtil.GetCertPublicKey(cert); 
byte[] decbytes = publicprovider.Decrypt(b, false); 
Debug.WriteLine("decrypted bytes" + new System.Text.UTF8Encoding().GetString(decbytes)); 

解密字節我的Java applet代碼

KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 
byte[] privKeyBytes = loadPriavteKeyFromFile(fileName, new String(txtPassword.getPassword())); 
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(privKeyBytes); 
RSAPrivateKey privKey = (RSAPrivateKey) keyFactory.generatePrivate(privSpec); 
Cipher rsaCipher = Cipher.getInstance("RSA"); 
rsaCipher.init(Cipher.ENCRYPT_MODE, privKey); 
byte[] ciphertext = null; 
ciphertext = rsaCipher.doFinal(xmlToSign.getBytes()); 
String urlString = "http://localhost:3290/SignApplet.aspx"; 
String senddata = Base64.encodeBase64String(ciphertext); 
doHttpUrlConnectionAction(urlString,senddata.getBytes()); 
JOptionPane.showMessageDialog(this, "XML successfully signed and sent to server."); 

可以在以下任何一種情況的幫助我得到的例外byte[] decbytes = publicprovider.Decrypt(b, false); line

類型'System.Security.Cryptography.Cryptographi cException'發生在mscorlib.dll 密鑰不存在。

並且證書沒有安裝在密鑰庫中。我也可以使用Java servlet成功解密數據。

我使用Windows 7上 的公共和私有密鑰存儲在單獨的文件asp.net VS2010

+0

什麼是.net Java小程序? – CodesInChaos 2011-01-22 13:46:20

+0

我是否會得到該鍵不存在的異常? – 2011-01-22 14:28:40

回答