首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在此实现中,BlockSize必须为128。

在此实现中,BlockSize必须为128。
EN

Stack Overflow用户
提问于 2022-04-28 18:40:55
回答 1查看 437关注 0票数 1

我正在使用下面的代码来解密一些字符串,但是我得到了以下错误:在这个实现中,BlockSize必须是128。

我想知道是否有任何方法,以及如何在不减小大小的情况下解密我得到的字符串,因为我无法更改密钥和IV,因为字符串是用它加密的。

代码语言:javascript
复制
       private string Decrypt(string text)
       {
           var inputByteArray = Convert.FromBase64String(text);

           var rm = new RijndaelManaged();
           rm.BlockSize = 256;
           rm.IV = Encoding.UTF8.GetBytes("11111111111111111111111111111111");
           rm.KeySize = 256;
           rm.Key = new SHA256Managed().ComputeHash(Encoding.UTF8.GetBytes("11111111-1111-1111-1111-111111111111"));

           var decryptor = rm.CreateDecryptor();
           var msDecrypt = new MemoryStream(inputByteArray);
           var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
           var srDecrypt = new StreamReader(csDecrypt);
           return srDecrypt.ReadToEnd();
       }

我用的是.netcore 5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-29 20:32:08

为了解决这个问题,我遵循Topaco的建议,使用了Bouncy城堡/C#库,这解决了我所得到的错误,下面我留下了基于其他论坛的解决方案。

代码语言:javascript
复制
public static string Decrypt(string cipherText)
        {
    var ivStringBytes = Encoding.UTF8.GetBytes("11111111111111111111111111111111");
            var cipherTextBytes = Convert.FromBase64String(cipherText);
            var keyBytes = new SHA256Managed().ComputeHash(Encoding.UTF8.GetBytes("11111111-1111-1111-1111-111111111111"));
            var engine = new RijndaelEngine(256);
            var blockCipher = new CbcBlockCipher(engine);
            var cipher = new PaddedBufferedBlockCipher(blockCipher, new Pkcs7Padding());
            var keyParam = new KeyParameter(keyBytes);
            var keyParamWithIV = new ParametersWithIV(keyParam, ivStringBytes, 0, 32);
            cipher.Init(false, keyParamWithIV);
            var finalBytes = cipher.DoFinal(cipherTextBytes);
            var final = Encoding.UTF8.GetString(finalBytes);
            return final;
}

这是我用的包裹:

代码语言:javascript
复制
<PackageReference Include="BouncyCastle.NetCore" Version="1.8.10" />
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72048761

复制
相关文章

相似问题

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