如何将 AES 初始化向量传递给混合密码系统的客户端

2023-11-23

我需要实现客户端-服务器通信的安全性。我已经实施了以下混合密码系统

为了在混合密码系统中加密发送给 Alice 的消息,Bob 执行以下操作:

  1. 获取Alice的公钥。
  2. 为数据封装方案生成新的对称密钥。
  3. 使用刚刚生成的对称密钥在数据封装方案下加密消息。
  4. 使用 Alice 的公钥,在密钥封装方案下加密对称密钥。
  5. 将这两个加密发送给 Alice。

为了解密这个混合密文,Alice 执行以下操作:

  1. 使用她的私钥解密密钥封装段中包含的对称密钥。
  2. 使用该对称密钥来解密数据封装段中包含的消息。

我使用 RSA 作为公钥加密系统,使用 AES 作为对称密钥加密系统。一切正常,但我不确定如何处理 AES 初始化向量。目前,我正在连接 AES 密钥和初始化向量,用公钥对其进行加密并将其发送到服务器。

我只是想得到一些关于这种方法的意见。其他通信协议SSL等如何解决这个问题

Thanks.


您不加密 IV。将其与加密密钥捆绑在一起并将其(以明文形式)发送给收件人。

这方面的标准确实存在。这种方案在 CMS(S/MIME 的基础)中称为“KeyTransRecipientInfo”,PGP 也提供类似的模式。 TLS 还包括初始化向量作为密钥加密算法标识符中的参数,使用与 CMS 相同的 ASN.1 语法。执行此操作的强大开源库可用于许多平台。

至少,研究 CMS 规范可能有助于避免自制实现中的一些陷阱。看RFC 3369 的第 6.1 条和第 6.2.1 条。

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

如何将 AES 初始化向量传递给混合密码系统的客户端 的相关文章

  • 是否可以使用 Python 中的密码安全地加密然后解密数据?

    我在 python 程序中有一些数据 我想在使用密码写入文件之前对其进行加密 然后在使用它之前读取并解密它 我正在寻找一些可以根据密码进行加密和解密的安全对称算法 这个问题 https stackoverflow com questions
  • ECB、CBC、CFB哪种加密模式

    我的 php 脚本和 c 应用程序将相互传递一个 32 个字符长的哈希字符串 最佳模式是什么 我想到了 ECB 但我不确定 因为它说如果使用超过 1 个区块就不要使用 我如何知道该块有多大 他们偶尔会传递一个大文本文件 这将是加密此 CBC
  • CryptoJS 和 Java 代码的输出加密不同

    我需要从客户端 JavaScript 加密字符串并从服务器端 Java 解密 所以我找到了 CryptoJS 并使用与 mi Java 代码相同的参数 配置编写代码 但输出总是不同 你有什么想法或者会发生什么吗 I m use 带有 NoP
  • 使用 PHP 的 JavaScript atob 操作

    我想知道是否可以使用 PHP 解密 JavaScript 加密文本 使用 JavaScript 的 btoa 函数加密 看一下base64 decode http php net manual en function base64 deco
  • iOS:获取 iPhone 密码以生成用于加密的对称密钥

    我正在开发一个 iOS 应用程序 该应用程序分发到所有用密码锁定的设备 有没有办法获取设备密码 或其某种形式 来动态生成对称密钥 例如使用 PBKDF2 来加密 解密数据 否 没有 API 可以确定是否设置了设备密码或获取密码 如果已设置
  • AES加密结果只有部分数据正确(使用mcrypt lib)

    我从以下位置下载了 AES 加密的示例代码https gist github com 2436364 https gist github com 2436364我修改了部分源代码以满足我的项目要求 如下 include
  • 易于使用的Python加密库/包装器?

    我想在Python中用密码加密任意长度的字符串 我会比较喜欢not处理填充 密钥生成和 IV 因为说实话 我对密码学还不太了解 而且我想避免搞砸 我还更喜欢使用众所周知的密码作为 AES 我理想的库 我们称之为 MagicCrypt 会像这
  • Java GuardedString - 用于加密的随机密钥是否存储在 Java 堆内存中?如果不是,那么密钥保存在哪里?

    Oracle 的 org identityconnectors common security GuardedString 要转换为 GuardedString 的原始数据需要由 EncryptorImpl class 随机生成的加密密钥
  • RSA 加密-解密:BadPaddingException:数据必须以零开头

    对于一个被问了很多次的问题 我很抱歉向您询问您的技能 我有一个关于 RSA 加密的问题 我已经检查过有关此问题的其他主题 但没有找到任何有用的答案 我希望你能帮助我 我想读取一个文件 加密其内容 然后解密它并将这些解密的字节放入一个新文件中
  • 使用 AesManaged“填充无效且无法删除”

    我正在尝试使用 AesManaged 进行简单的加密 解密 但在尝试关闭解密流时不断出现异常 这里的字符串被正确加密和解 密 然后在 Console WriteLine 打印正确的字符串后 我收到 CryptographicExceptio
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • SSL如何使用对称和非对称加密?如何管理一台主机上多个站点的认证? [复制]

    这个问题在这里已经有答案了 首先 引用微软TechNet的一些内容管理 Microsoft 证书服务和 SSL http technet microsoft com en us library bb727098 aspx 回顾一下 安全 S
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private
  • 如何使用 DUKPT 加密在读卡器中生成密文?

    For BDK 0123456789ABCDEFFEDCBA9876543210 KSN FFFF9876543210E00008 生成的密文如下 C25C1D1197D31CAA87285D59A892047426D9182EC11353
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • crypto++ / pycrypto 与谷歌应用程序引擎

    我正在使用 crypto 将 AES 加密的 http 请求发送到应用程序引擎 计划在那里解密它们 我的计划是加密 之后的部分所以它是这样的 http myurl com Command eiwjfsdlfjldkjfs http myur
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • Android 中的 RSA 加密

    我正在编写一个在 Android 中使用 RSA 的程序 我有以下问题 我正在获取 RSA 密钥 KeyPair kp kpg genKeyPair publicKey kp getPublic privateKey kp getPriva
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件

随机推荐

  • 多次调用 thread.timer()

    代码 from threading import Timer import time def hello print hello a Timer 3 hello a start time sleep 4 a start 运行此脚本后 我收到
  • 错误:原因:无法找到请求目标的有效证书路径

    当我同步 gradle 时 我在 android Studio 2 2 3 中收到以下错误 错误 原因 无法找到请求目标的有效证书路径 我该如何解决这个问题 我也在添加我的 Gradle 文件 apply plugin com androi
  • 在临时字符串上使用 string::c_str [重复]

    这个问题在这里已经有答案了 关于临时对象何时被销毁 这是否有效 FILE f fopen std string my path c str r 在评估第一个参数后 临时对象是否会立即被销毁fopen或之后fopen call 使用以下代码进
  • 方便地移动列

    关于如何将列移动到第一个或最后一个位置有很多很好的问题和答案 Using dplyr最佳答案分别类似于 iris2 lt iris gt head 2 iris2 gt select Sepal Width everything move
  • 在命名元组列表中建立索引并查找值

    我有一个如下所示的命名元组 tup myTuple a b c 其中 可以是任何值 字符串 数字 日期 时间等 现在 我列出了这些命名元组并想要找到 假设 c 1 以及 a 和 b 的相应值 有没有Pythonic的方法可以做到这一点 使用
  • 字体大小独立的 UI:当我切换到 120 DPI 时一切都崩溃了?

    因此 我正在阅读有人在另一个问题中链接到的 Windows Vista UI 指南 他们提到您应该能够在切换到 120 DPI 后继续生存 好吧 我启动了安装了应用程序的便捷虚拟机 然后我们得到了什么 啊啊啊 大规模用户界面失败 一切都杂乱
  • 将一个输入文件与给定数量的文件进行匹配的算法

    我上周去面试了 我被算法回合中的一个问题困住了 我回答了这个问题 但面试官似乎并不相信 这就是为什么我分享同样的内容 请告诉我这个问题有什么优化的方法 以便对我以后的面试有帮助 Question 给出了 20 个文本文件 所有文件都是 AS
  • 为什么局部变量的地址每次都会不同?

    我询问了 Google 并在 StackOverflow 上做了一些研究 我的问题是 当我进入main 在C 程序中调用函数并声明第一个变量 为什么该变量的地址在不同的执行过程中会有所不同 请参阅下面我的示例程序 include
  • Android - 显示动画状态栏图标

    我正在尝试将通知状态栏图标设置为动画 android R drawable stat sys upload 它工作正常 但图标没有动画 private void showStatusNotification NotificationMana
  • 使用 IF/ELSE IF 语句的奇怪错误

    我试图创建一个依赖于场景参数值的临时表并使用以下 IF 语句 但出现以下错误 IF indexName A begin select top 400 into temp from pretemp order by EMRev desc en
  • Android.mk 中的每个文件 CPPFLAGS

    我正在处理一个 Android mk 文件 其中对于单个模块 其中一个文件需要不同的 CPPFLAGS 也就是说 它需要启用 frtti 而其他则需要 Android 默认的 fno rtti 显而易见的解决方案是目标特定变量 但奇怪的是
  • Microsoft Chart堆积柱形图有间隙

    我正在使用 Net 4 0 中的图表库来创建包含多个系列的堆叠柱形图 我的目标是一个直方图 显示多个系列 教师 每天的累积操作数 报告完成情况 经常会丢失数据 特定教师当天没有活动 当系列中缺少数据时 我会在条形图中出现间隙 My code
  • jQuery ajax: 即使响应正常 200 也会运行错误

    我有一个通过 AJAX 使用 remote gt true 提交表单的表单 查看服务器日志和 FireBug 我得到响应 200 OK 它以以下形式返回 JSON email email protected 然后我有这两个处理程序 new
  • TypeError:不是函数打字稿类

    我在打字稿类中收到以下错误 并且无法理解原因 我所做的就是尝试调用传递令牌的辅助函数 Error 发布错误 TypeError this storeToken 不是函数 Class Authentication Service Contai
  • 按升序排序,但最后保留零

    假设我有一个矩阵A 在下面的表格中 A 35 1 6 3 32 0 0 9 0 0 0 0 我想按升序排序 但最后保留零 我知道我可以用所有零替换inf 排序 然后替换infs 再次为零 如中所提议的这个问题 我认为有一个更简单的方法 至少
  • StyleCop/FxCop 10 - 如何仅在命名空间级别正确抑制消息?

    FxCop 10 抱怨以下内容 using XYZ Blah CA1709 XYZ using Xyz Blah No complaint using XylophoneSuperDuperLongFullName Blah I don t
  • ABAP CDS 视图中的可选参数?

    我正在尝试创建一个 CDS 视图以供使用可选参数的使用 但目前不支持可选参数 是否有一种解决方法可以根据输入参数以某种方式选择要执行 使用哪些 where 子句 你检查了吗消耗 defaultValue注解 请看一下参考文件
  • 解析日期时间,时区格式为 PST/CEST/UTC/etc

    我正在尝试解析类似于以下内容的国际日期时间字符串 24 okt 08 21 09 06 CEST 到目前为止我已经得到了类似的东西 CultureInfo culture CultureInfo CreateSpecificCulture
  • jQuery DataTables - 通过精确匹配过滤列

    尝试仅显示与搜索栏中输入的搜索词完全匹配的内容 例如 我有一个按 ID 进行过滤的搜索栏 我只想显示与输入的确切 匹配的记录 So if 123已输入 我不想要12345 91239等要显示的内容 仅有的123 看到一些关于bRegex在常
  • 如何将 AES 初始化向量传递给混合密码系统的客户端

    我需要实现客户端 服务器通信的安全性 我已经实施了以下混合密码系统 为了在混合密码系统中加密发送给 Alice 的消息 Bob 执行以下操作 获取Alice的公钥 为数据封装方案生成新的对称密钥 使用刚刚生成的对称密钥在数据封装方案下加密消