首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSA/ECB/ with 1填充解密

RSA/ECB/ with 1填充解密
EN

Stack Overflow用户
提问于 2011-11-08 17:58:46
回答 1查看 2.3K关注 0票数 0

下面的标记是SAML响应的一部分。我必须解密跟随CipherValue。我将CipherValue (字符串)传递给以下函数,但它没有返回正确的值,我做错了什么?

文件上说:

  1. 从证书中获取私钥。使用RSA/ECB/PKCS1Padding.

解密加密密钥的

(键为以下值)

代码语言:javascript
复制
private string RSADecryption(string dataToDecrypt) 
{

  String certificateLocation = ConfigurationManager.AppSettings.Get("CertificateLocation");
  String certificateStore = ConfigurationManager.AppSettings.Get("CertificateStore");
  string certificateSubject = ConfigurationManager.AppSettings.Get("CertificateSubject");
  String decryptedKey = string.Empty;
  try
  {
      X509Certificate2 encryptionCertificate = X509Utilities.GetCertificateBySubject(certificateSubject, certificateStore.ParseAsEnum<StoreName>(),
      certificateLocation.ParseAsEnum<StoreLocation>());
      if (encryptionCertificate == null )
          Helper.LogMessage(" Did not find Encryption Certificate on the sserver " );
      RSACryptoServiceProvider rsaProvider = (RSACryptoServiceProvider)encryptionCertificate.PrivateKey;
      byte[] cipherbytes = Convert.FromBase64String(dataToDecrypt);
      byte[] plainbytes = rsaProvider.Decrypt(cipherbytes, false);
      System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
      decryptedKey =  enc.GetString(plainbytes);
  }

  catch (Exception e)
  {
      Helper.LogMessage(e.Message + " Key Parsing error. DataToDecrypt = " + dataToDecrypt);
      throw e;
  }
  return decryptedKey;

HQrhmJpbd0p32QjOFrOKQhNSr4q6bcbg+9AhxJS6yZR19Nqh3VDMwOW2wsCBuSmFlv7WjR7TzW6URjINvNbv2nMfsKu3M9dscxhmGY+jVtUJ6sTf7FHdK9D76miAdq1EIsm0lNtdW5etMx/85iMiFOObbyZuB8oaYeThToVjTUVYfNGQOJ99wvh8OL/40eomDlKfwN4eQ88kVbY1eUO1OxEfQsUbDWyXvZEvBPmYUb7km+C6rX8UjsLUrqOOpXym9oi5dH+T+kAP2Rb5N16VRxJHPGF/gXeuD+Jq4FSGtjiiBE9qvBIFWkt4hYabSgUE3Li5DqMoH/P9/EGqf6mpyvHjv8yJYRTpA//5nM43z/KCUFX8VrFCXBp0N1Y40zpZWJW2y9fSIlyGyMas1ByBlkxpRgjqqnv1L+pZohYmKQsOILhM34TASzddYgeQbPfoAuC8i/4cMWYDrO+NP+n5d97FZDPs3u3gMWefhWoSt0BSEwUCbaNmS9I39ihFwyT/6rmurgLvfY0AaFz16Q3qQlH3yVdGR2j+A2spfJLyMrRcVTSff6HKa6LC7xUO9aBF2WpEw1mxI0QXMY2VMtSwdT4pzMc+itbDe9r4ZW9BZhA7qsBd0oOVRxxxNvOo9eIUlLyGRzvMbX+oOUiHkAm/oil7Vll5JzvlzVrc4dzzOUA=

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-08 20:12:45

如果不能够复制这个值,或者没有生成加密值的代码,就很难确定。我最好的猜测,也就是我见过太多次,是一个文本编码问题。这更有可能是因为:

( a)密码(如不良填充)也不例外;

( b)目前ASCII的使用不多,因此如下所示:

System.Text.ASCIIEncoding enc =新的System.Text.ASCIIEncoding();

可能不会如愿以偿。

所以我想试试UFT8,Unicode.以及所有的变体(除非你在某个地方有这个文档)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8054973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档