首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用解密的密钥解密数据

使用解密的密钥解密数据
EN

Stack Overflow用户
提问于 2012-01-14 03:07:33
回答 2查看 625关注 0票数 0

我正在尝试使用私钥解密数据。我能够使用RSA和私钥解密密钥。现在,我想使用解密的密钥来解密数据。使用AES对数据进行加密,使用PHP对随机会话密钥进行加密。你能告诉我有什么例子吗?

这是我到目前为止拥有的代码。

代码语言:javascript
复制
    static void Main(string[] args)
    {
           AsymmetricCipherKeyPair keyPair;

        string protectedSecret = "U6XksFkhWV4.......eo3fRg==";
        var decodedSecret = Convert.FromBase64String(protectedSecret);

        string iv = "KLnP....wA==";
        var decodedIV = Convert.FromBase64String(iv);

        using (var reader = File.OpenText(@"c:\\private.key")) 
            keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject();

        var decryptPKIEngine = new Pkcs1Encoding(new RsaEngine());
        decryptPKIEngine.Init(false, keyPair.Private);

        var secret = Encoding.UTF8.GetString(decryptPKIEngine.ProcessBlock(decodedSecret, 0, decodedSecret.Length));

        var  protectedData = Convert.FromBase64String("f8..Po=");
      }
EN

回答 2

Stack Overflow用户

发布于 2012-01-14 03:17:31

创建一个RijndaelManaged实例并将其KeyIV设置为您的字节数组。

然后,从CreateDecryptor()创建一个CryptoStream,用您的密文字节数组包装一个MemoryStream

最后,从CryptoStream中读取明文。(如果它是实际的文本,您可能希望使用StreamReader)

票数 1
EN

Stack Overflow用户

发布于 2012-01-14 03:23:13

尝试此替换,在需要的地方放置必要的字符串

代码语言:javascript
复制
static string PHPDecrypt() 
    {            
      byte[] keyBytes = Convert.FromBase64String("U6XksFkhWV4.......eo3fRg=="); //put in your real values here and below for iv and cipherTextBytes
      byte[] iv = Convert.FromBase64String("KLnP....wA=="");
      byte[] cipherTextBytes = Convert.FromBase64String("Put the EncryptedText here");

      var symmetricKey = new RijndaelManaged 
      { 
         Mode = CipherMode.CBC, 
         IV = iv, KeySize = 256, 
         Key = keyBytes, 
         Padding = PaddingMode.Zeros
      };

      using (var decryptor = symmetricKey.CreateDecryptor())
      using (var ms = new MemoryStream(cipherTextBytes))
      using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) {
        var plainTextBytes = new byte[cipherTextBytes.Length];
        int decryptedByteCount = cs.Read(plainTextBytes, 0, plainTextBytes.Length);
        return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8855843

复制
相关文章

相似问题

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