使用 CryptoStream (DESCryptoServiceProvider) 解密时如何返回 byte[]

2024-01-11

这是一个初学者的问题,

每次我在互联网上搜索时,都会解密DESCryptoServiceProvider函数总是返回一个字符串。

我们怎样才能得到byte[]为了回报?

这是代码。感谢您的任何帮助。

DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
cryptoProvider.Padding = PaddingMode.None;
cryptoProvider.Mode = CipherMode.CBC;

MemoryStream memoryStream = new MemoryStream(value);
CryptoStream cryptoStream = new CryptoStream(memoryStream, 
cryptoProvider.CreateDecryptor(password, initVector), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cryptoStream);

return reader.ReadToEnd();            
//how to return byte[];

我也遇到了这个问题,我创建了一个class有一些功能可以帮助我解决这个问题。

执行加密的函数是:

private byte[] PerformCryptography(ICryptoTransform cryptoTransform, byte[] data)
        {
            using (var memoryStream = new MemoryStream())
            {
                using (var cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write))
                {
                    cryptoStream.Write(data, 0, data.Length);
                    cryptoStream.FlushFinalBlock();
                    return memoryStream.ToArray();
                }
            }
        }

The ICryptoTransform是特定的加密器或解密器。

该方法适用于对称算法

举例来说,加密和解密的方法如下:

public byte[] Encrypt(byte[] data)
{
    if (CanPerformCryptography(data))
    {
        using (var encryptor = _algorithm.CreateEncryptor(_key, _iv))
        {
            return PerformCryptography(encryptor, data);
        }
    }
    return data;
}

public byte[] Decrypt(byte[] data)
{
    if (CanPerformCryptography(data))
    {
        using (var decryptor = _algorithm.CreateDecryptor(_key, _iv))
        {
            return PerformCryptography(decryptor, data);
        }
    }
    return data;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 CryptoStream (DESCryptoServiceProvider) 解密时如何返回 byte[] 的相关文章

随机推荐

  • 使用字符串日期对列表进行排序 [Kotlin]

    我有数组列表typeBeanArrayList其中元素有点像日期 例如 30 03 2012 28 03 2013 31 03 2012 2 04 2012 我怎样才能排序降序 Code typeBeanArrayList database
  • 如何通过保持“templateurl”不变来编译 Angular 2 Webpack

    Webpack 通过在中生成 js 来编译 typescript 文件dist文件夹 我发现 webpack 正在将所有 templateurl 更改为 template 如下所示 我的打字稿组件 Component selector ap
  • CListCtrl:如何保持水平滚动位置?

    如何保持 CListCtrl 的水平滚动条位置 我定期转储并重新填充列表控件的内容 因此无需明确记住旧位置并恢复它 滚动就会返回到左上角 我问了一个相关问题 CListCtrl 如何保持滚动位置 https stackoverflow co
  • 雪豹上的 python 需要 32 位 libxml2 吗?

    我在我的 sl mbp 上安装 scrapy 真是太麻烦了 它需要 libxml2 所以我开始安装它 从 macports 安装它似乎并没有拉下 python 绑定 通过 scrapy 的说明从源代码安装它 here http doc sc
  • 在Eclipse中导入ant build.xml

    我有一个使用ant构建的android项目 是否可以在eclipse IDE中导入这个ant项目 更新 有一个选项可以使用 ant 创建项目build xml在 Eclipse 中 现有 ant Buildfile 中的文件 gt 新建 g
  • 按降序对两列最常见的组合进行排序

    我的数据框看起来像这样 A B C 1 3 1 2 1 1 2 3 1 1 2 1 3 1 1 1 2 1 2 1 1 1 3 1 1 2 1 我想将数据减少为仅按降序排序的两列 A 和 B 最常见的组合 输出应该看起来像 A B coun
  • 淘汰赛手风琴绑定断裂

    以下绑定在 1 9 之前有效 ko bindingHandlers accordion init function element valueAccessor var options valueAccessor setTimeout fun
  • 如何将版本信息添加到我的 powershell 脚本中?

    我有一个脚本 test ps1 如下所示 但我希望能够运行 test ps1 version并让它返回当前的version剧本给我 有没有办法做到这一点 lt SYNOPSIS Test DESCRIPTION Desc INPUTS No
  • 使用外部框架将 Vue3 自定义元素集成到 Vue2 应用程序中

    我有一个用 Vue2 编写的应用程序 它还没有真正准备好升级到 Vue3 但是 我想开始在 Vue3 中编写一个组件库 并将组件导入回 Vue2 以便在准备就绪后最终进行升级 Vue 3 2 引入defineCustomElement它工作
  • 更改选择标签中单独选项的 css font-family

    我不知道这是否可能 如果不可能 是否有人可以提出可选的想法 但我试图在选择标签中显示不同字体的下拉菜单 特别是来自 Google 字体目录的字体 在下拉列表中 我尝试通过使用其代表的字体设置每个选项的样式来显示预览
  • IFrame 内 ExtJS 5 应用程序的滚动问题

    Hy 这就是我的测试页面的样子 蓝色区域是父页面 绿色区域是运行 ExtJS 应用程序的 IFrame 内部带有标签的简单视口 如果网站在触摸设备 iPad Android 平板电脑等 上执行 则无法通过在 IFrame 绿色区域 上 擦拭
  • Django choicefield 的初始值

    我遇到一个奇怪的问题 我似乎无法在 django 中的表单中设置其中一个字段的初始值 我的模型字段是 section models CharField max length 255 choices Application Applicati
  • JTextField 与 HTML 标签一起

    我正在研究 Java 7 我正在尝试使用 HTML 标签来格式化文本 我将文本传递到 JTextField text new JTextField text setText p The program performs encryption
  • Elixir 向所有订阅者直播

    我正在尝试在 Elixir 中实现一个无线电服务器 一个进程始终在工作并读取文件 mp3 并发布到主题 radio 当前用于测试目的 当它完成时会重新开始 每个连接订阅主题 radio 我不明白如何将块发送到所有订阅的连接 连接在 2 或
  • 我如何使用 wxwidgets 在 C++ 中访问串行端口数据

    我是电子与通信工程专业的学生 我正在开发一个项目 其中微控制器将数据发送到计算机的串行端口 异步 我目前正在为我的 GUI 工作学习 wxWidgets 我的问题 是否可以使用wxWidgets来获取数据并显示 实施起来是不是非常困难呢 我
  • 如何从 Base 64 字符串获取 MIME-TYPE?

    我从后端获取字符串的 base64 然后用 Javascript 对其进行解码以在浏览器上显示 该字符串可以是任何文件 pdf img docx zip 等 我的 base64 字符串不包含 mime 类型 例如 data applicat
  • 为 Typescript、es6 和 Webpack 2 配置 Jest

    在我的 tsconfig 中 我当前将模块 compilerOption 属性设置为 es6 但是 当我运行 Jest 时 我收到以下错误 Test suite failed to run Object
  • Azure.Security.KeyVault.Secrets:az 未被识别为内部或外部命令

    我正在使用 Net Core 并利用 Azure 服务 虚拟机 Windows Server 2016 数据库 PostgreSQL 和 Azure Key Vault 开发 Web 应用程序 下面是我的 csproj 文件
  • 如何获取 selenium 上所有打开的窗口和浏览器的处理程序?

    我正在寻找一种返回 url 和处理程序的方法在所有打开的窗口 选项卡和浏览器中 不仅仅是目前在 Selenium 中运行的那个 我下面的代码仅返回通过运行当前测试实例化的当前窗口 String originalWindowHandle dr
  • 使用 CryptoStream (DESCryptoServiceProvider) 解密时如何返回 byte[]

    这是一个初学者的问题 每次我在互联网上搜索时 都会解密DESCryptoServiceProvider函数总是返回一个字符串 我们怎样才能得到byte 为了回报 这是代码 感谢您的任何帮助 DESCryptoServiceProvider