获取 .Net 中 CryptoStream 的长度

2024-02-24

我正在开发加密/解密文件的软件。 我希望能够猜测加密后数据的长度,但我无法使用 CryptoStream.Length (它会抛出 NotSupportedException)。 有什么办法可以猜出来吗?

我正在使用 RijndaelManaged (.Net Framework 4.0)


这比我能说的要好得多http://www.obviex.com/Articles/CiphertextSize.aspx http://www.obviex.com/Articles/CiphertextSize.aspx

从那里:

在最一般的情况下,密文的大小可以计算为:

密文=明文+块-(明文MOD块)

其中CipherText、PlainText、Block分别表示密文、明文、加密块的大小。基本上,生成的密文大小是根据扩展到下一个块的明文大小来计算的。如果使用填充并且明文的大小是块大小的精确倍数,则将添加一个包含填充信息的额外块。

假设您想要使用 Rijndael 加密算法、128 位(16 字节)块大小和 PKCS #7 填充来加密 9 位社会安全号 (SSN)。 (出于说明目的,假设在加密之前从 SSN 值中删除了破折号,以便“123-45-6789”变为“123456789”,并且该值被视为字符串,而不是数字。)如果SSN中的数字定义为ASCII字符,则密文的大小可以计算为:

密文 = 9 + 16 - (9 MOD 16) = 9 + 16 - 9 = 16(字节)

请注意,如果明文值的大小恰好是块大小的倍数,则包含填充信息的额外块将被附加到密文中。例如,如果您要加密 16 位信用卡号(定义为 16 个字符的 ASCII 字符串),则密文的大小将为:

密文 = 16 + 16 - (16 MOD 16) = 16 + 16 - 0 = 32(字节)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 .Net 中 CryptoStream 的长度 的相关文章

随机推荐

  • ID 为“spock”​​的 Spock TestEngine 未能发现测试

    当我用Spock运行单元测试时 出现异常 Internal Error occurred org junit platform commons JUnitException TestEngine with ID spock failed t
  • 用于检查资源是否存在的 REST 标准

    检查资源是否存在的 REST 方法是什么 假设您有一些名为 项目 的资源 据我轻描淡写 其中一种方式是 获取资源 GET rest projects 123 GET rest projects someCriteria GET rest p
  • Django 1.7:提供 pdf 文件(UnicodeDecodeError)

    我正在尝试使用 django 1 7 提供 PDF 文件 这基本上是 应该 工作的代码 如果我将 content type 更改为 文本 并用它下载 tex 文件 它当然可以工作 但是当我用二进制文件尝试 得到 UnicodeDecodeE
  • 在 Gherkin 中使用正确的语法

    查找有关 Gherkin 的文档似乎非常困难 所以我想知道是否有一种方法可以增强步骤定义以使测试人员能够使用正确的语法 有一个例子可以说明我的意思 Testing Then I see there is 1 item More testin
  • Rails 4 + Capistrano 3:部署:检查不起作用

    我可以成功通过 SSH 连接到我的服务器 然而 当我这样做时deploy check 它给了我这个 Nets Mac Pro mysite emai be cap staging deploy check INFO e67f845c Run
  • Git:通过标签从远程拉取

    我是 git 的初学者 通过创建一个本地存储库来进行拉取和推送 在本地计算机上测试了几个命令 我在 project 中设置了一个裸存储库 并从中克隆了两个用户 user1 和 user2 该项目当前具有文件 one txt two txt
  • 如何使用 AppleScript 按类别过滤 Outlook for Mac 日历事件

    我正在尝试在 OSX 上编写一个 Applescript 以根据事件类别 例如 日历事件 过滤 Outlook for Mac 2011 日历事件 查找标记为 会议 的所有活动 例如 我有一个名为 WWDC 的日历事件 可以通过以下脚本找到
  • 通过 SoapClient 连接到 eBay Trading API 会抛出“Web 服务 eBayAPI 未正确配置或未找到且已禁用”异常

    我正在尝试连接到 eBay 交易 API 并使用 PHP 的 SoapClient 类发出基本请求 但遇到了麻烦 我已经花了几个小时搜索和摆弄示例 但我无法让任何东西发挥作用 所以我编写了以下准系统代码 并试图让它工作 token toke
  • 如何创建适合移动设备的网站[基础设施]

    如果我想创建一个相对较小的网站的移动友好版本 最好有一个子域 该子域可以重定向到具有单独标记和样式的全新网址 或者最好在代码中检测用户代理并以编程方式更改到不同的移动友好样式表 或者他们是我忽略的更好的基于基础设施的解决方案 Thanks
  • 如何将 gltf 编码/压缩为 draco

    我想使用 draco 在三个 js 和 Reactjs 中以编程方式压缩 编码 gltf 文件 我不想使用任何命令行工具 我希望以编程方式完成 请给我建议一个解决方案 我尝试使用 gltf pipeline 但它在客户端不起作用 当我在re
  • ReactJs 地图在 IE10 中未定义

    我看到类似的问题并尝试了一切但没有帮助 我收到错误 map is undefined in ie10 和 ie11 在我的项目上进行此更改后 ie11 可以工作 但 ie10 不能 在我的 package json 中 browsersli
  • 独立加速发生器

    我需要开发一个独立的 Acceleo 生成器 但我不知道如何启动 我已经在 Acceleo 项目中完成了生成器 Acceleo 项目包含generate mtl 文件 Generate java 文件和Activator java 文件 我
  • Xamarin.Forms(可为空)DatePicker:缺少确定和取消事件的解决方法

    我正在使用可为空的DatePicker https developer xamarin com api type Xamarin Forms DatePicker 它是通过子类化来实现的DatePicker并使用自定义渲染器 public
  • 用户输入验证,强制字符串仅包含字母

    我试图在我的方法之一中创建一个用户输入验证系统 它在一定程度上工作正常 但是尽管有代码 它仍然允许整数作为有效输入 我不希望它成为这样 我怎么能更改此代码 仅允许字母 字符串 作为有效输入 我在这一点上感到困惑 我尝试了这个系统的整数 它工
  • jQuery 浏览器兼容性 (IE)

    由于我试图向您展示的源代码相当长且复杂 因此我只是提供一个指向我遇到问题的页面的链接 http www thesportinghub com lms make my picks http www thesportinghub com lms
  • 将一个元素绑定到两个源

    我目前有两个接受任何数字的文本框 我有一个文本块 它接受输入的两个数字并计算平均值 我想知道是否有一种方法可以将此文本块绑定到两个文本框并利用自定义转换器来计算平均值 我目前正在捕获两个文本框中的文本更改事件并以这种方式计算平均值 但我假设
  • 没有安装的配置文件与安装的 iOS 代码签名密钥匹配

    当我选择 iphone 设备并构建时 它显示 xamarin ios 的错误 错误 555 没有安装的配置文件与安装的 iOS 代码签名密钥匹配 请帮助解决这个问题 尝试以下步骤重新安装证书和配置文件 去苹果会员中心 http develo
  • 如何使用 Spring JPA 对 jsonb 列进行查询?

    我正在使用 Spring JPA 和 PostgreSQL 数据库 我有一个实体如下 Entity TypeDef name json binary typeClass com vladmihalcea hibernate type jso
  • 更改 Kivy 中按钮的背景颜色

    我是 Kivy 的新手 在指定按钮的背景颜色时遇到困难 这是我的简单例子 custombutton py from kivy app import App from kivy uix widget import Widget class M
  • 获取 .Net 中 CryptoStream 的长度

    我正在开发加密 解密文件的软件 我希望能够猜测加密后数据的长度 但我无法使用 CryptoStream Length 它会抛出 NotSupportedException 有什么办法可以猜出来吗 我正在使用 RijndaelManaged