首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从C#转换为Python,AES算法

从C#转换为Python,AES算法
EN

Stack Overflow用户
提问于 2022-09-18 17:12:45
回答 1查看 44关注 0票数 -1

我有C#中的代码,你能用语言描述代码中发生了什么吗?我试着用这个主题这一个 a和这一个进行复制。但我没有成功。如果你举个例子,那就太棒了。

代码语言:javascript
运行
复制
        public static string Decrypt(byte[] bytesToBeDecrypted)
        {
            byte[] decryptedBytes;
            using (var ms = new MemoryStream())
            {
                using (var aes = new RijndaelManaged())
                {
                    aes.KeySize = 256;
                    aes.BlockSize = 128;
                    var key = new Rfc2898DeriveBytes(CryptKey, SaltBytes, 1000);
                    aes.Key = key.GetBytes(aes.KeySize / 8);
                    aes.IV = key.GetBytes(aes.BlockSize / 8);
                    aes.Mode = CipherMode.CBC;
                    using (var cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
                        cs.Close();
                    }

                    decryptedBytes = ms.ToArray();
                }
            }

            return Encoding.UTF8.GetString(decryptedBytes);
        }

libs:系统,System.IO,System.Linq,System.Security.Cryptography,System.Text

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-18 17:34:29

MemoryStream -> 文档

创建支持存储为内存的流。

RijndaelManaged -> 文档

允许您使用Rijndeal算法进行对称加密/解密的类。这里似乎是deprecated.Note,“在.NET核心中,它与AES相同,只支持128位块大小。”这就说明了为什么您的aes.BlockSize = 128。

Rfc2898DeriveBytes -> 文档

通过使用基于PBKDF2的伪随机数生成器来实现基于密码的密钥派生功能HMACSHA1.

CryptoStream -> 文档

定义将数据流链接到加密转换的流。

谢天谢地,之前写这篇文章的人帮了你相当多的忙,因为这个方法的名字正是它所做的。在中间,您正在初始化AES类(RijndaelManaged)并设置值。创建一个CryptoStream,其中包含要写入的MemoryStream、所需的解密器(aes.CreateDecryptor()),并设置要写入的模式。我不熟悉CrypoStream类,但我假设cs.Write使用字节解密、开始写入数组的初始索引以及数组的完整长度作为参数。这将被写入内存流(ms),因此需要将其转换为数组,这是用ms.ToArray()完成的。最后,以UTF-8字符串的形式返回解密字节。\

我建议检查这个响应(不是确切的问题,但在Python的实现中类似):C# RFC2898DeriveBytes正在工作,但是Python生成的密钥和IV不使用Python解密。

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

https://stackoverflow.com/questions/73764865

复制
相关文章

相似问题

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