2011-01-22 30 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

回答