初始化向量的特征

2023-12-30

我绝不是密码学专家,我一直在 Stack Overflow 和维基百科上阅读一些问题,但在定义 IV 及其用法方面没有什么是真正“明确的”。

我发现的几点:

  • IV 被添加到明文消息中以加强加密
  • IV 是真正随机的
  • 每条消息都有自己独特的 IV
  • 有时使用时间戳和加密哈希来代替随机值,但这些被认为是不安全的,因为时间戳是可以预测的
  • WEP(在 802.11 中)的弱点之一是 IV 将在特定数量的加密后重置,从而重复 IV

我确信有many还有其他要点,有人能想到我错过的任何其他特征吗?


IV 是“影响加密过程的公共值”。 IV 的要点通常是“随机化”输入数据,以避免泄漏有关哪些输入块在明文中相同的信息(因为相同的块在“现实生活”数据中经常出现)。

IV 是否通过预先添加或以其他方式输入取决于使用它的算法。对于 CBC 模式下使用分组密码的对称加密,IV 被添加到加密的数据(对于每个块,CBC 使用前一个加密块;IV 扮演加密块-1 的角色)。

IV 与密钥的不同之处在于密钥是秘密的,而 IV 不需要是秘密的; IV 通常与加密消息一起传输。相反,每条消息的 IV 必须是不同的,而密钥可以重复使用。实际上,每条加密消息的 IV 必须是不同的用同一把钥匙;如果你为每条消息使用一个新密钥,那么你可以使用一个恒定的、固定的 IV。请注意,IV不需要保密,但如果您愿意,可以保密。但发送者和接收者必须就 IV 达成一致,并且由于 IV 每条消息都会发生变化,因此在某些设置中,保持 IV 的秘密可能会很不方便。

IV 是否必须是均匀随机的,或者只是不重复,取决于算法。 CBC 需要随机 IV。其他模式不太挑剔,例如GCM。您可以导出密钥and使用适当的单向功能从“主密钥”获取 IV。这就是 SSL 的作用。这看起来更棘手,不要在家尝试。

重复 IV 是 WEP 的众多罪过之一。

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

初始化向量的特征 的相关文章

  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • 我可以调整移出的矢量的大小吗?

    我有一些代码 我想在其中绝对确保移出的代码std vector不会留下秘密数据 考虑加密密钥管理 在我的班级的移动构造函数中 我做了类似的事情 X X rhs secret vector std move rhs secret vector
  • 如何在 golang 中创建 .der 文件,与 openssl 相同

    openssl rsa in prevate pem outform DER pubout out public der 你可能会考虑像这样的图书馆google trillian https github com google trilli
  • C 编程中的 rand() 问题? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我总是用 rand 得到相同的随机数序列 https stackoverflow com questions 1108780 why do i always get the same seque
  • C# 到 Java TripleDES ,不同的结果

    我正在尝试将此 C 加密算法转换为 Java 但是 我不断检索略有不同的加密结果 尚未尝试解密 还需要指出的是 我无法更改 C 代码 但是 当我在 C 中对字符串 test 调用加密函数时 它将返回nmj8MjjO52y928Syqf0J
  • Math.random() 与 Random.nextInt(int)

    有什么区别Math random n and Random nextInt n where n是一个整数 Here is 详细解释 https community oracle com message 6596485 thread mess
  • 如何将 openssl_pkey_get_public 和 openssl_verify 转换为 C# .NET

    PHP 代码验证来自银行的 iPizza 签名 key openssl pkey get public file get contents preferences bank certificate if openssl verify dat
  • Mysql 中的 MD5 和 Salt

    如何 解密 各种电商存储的密码添加 盐 我不是密码专家 所以 在过去 我使用过类似的东西 SELECT FROM mytable WHERE email email AND passwd MD5 pwd MySql MD5 函数只接受一个参
  • 在 Java 代码中存储加密密钥? [复制]

    这个问题在这里已经有答案了 我正在使用 JASYPT 在我们基于 Java 的软件中对密码进行加密解密 这就是我们加密密码的方法 StrongTextEncryptor textEncryptor new StrongTextEncrypt
  • Java 中使用 PBKDF2 进行密码验证

    我正在用 Java 进行基于密码的文件加密 我使用 AES 作为底层加密算法PBKDF2WithHmacSHA1使用以下代码从盐和密码组合中派生密钥 我从本网站上的另一位慷慨的海报获得 SecretKeyFactory f SecretKe
  • 加密json数据

    如何加密从客户端到服务器来回传输的 JSON 数据 当我使用firebug时 我可以看到所有数据 内容在result d 我正在使用 ASP NET 3 5 和 C 我们的管理员已将网站设置为使用 https 但我仍然可以发送 POST 请
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • Java加解密中IV和salt的处理

    所以我试图在方法中解密消息 但它不起作用 因为我需要这样做cipher init Cipher ENCRYPT MODE secret 在我尝试添加之前new IvParameterSpec iv to cipher init Cipher
  • 在 openjre 中使用需要 Java 策略文件的加密

    如果我想使用 java 和密钥长度超过 128 位的加密 我必须使用 Java 策略文件 如何使用 openjre 启动并运行这些应用程序 我在使用没有策略文件的 Oracle jre 时遇到了同样的错误 但我不能简单地使用 Oracle
  • 椭圆曲线加密的 .NET 实现(库)

    您能否建议在 NET 平台上使用椭圆曲线加密技术的任何实现 另外 如果您使用过它们 您能告诉我应该使用的推荐曲线吗 EDIT 正如 FatCat 提到的 它的实现在 NET Framework 3 5 中可用 但仅在 Windows Vis
  • 如何从文件中读取 N 随机行而不将文件存储在内存中?

    我熟悉从文件中读取单个随机行而不将整个文件读入内存的算法 http perldoc perl org perlfaq5 html How do I select a random line from a file 3f 我想知道这个技术是否
  • 获取 AES 256 Crypto++ 中的十六进制加密字符串

    我正在尝试在 MS Visual Studio 中使用 Crypto 实现 AES 256 算法 操作系统是Windows 7 64位 我需要以十六进制字符串形式提供密钥 以字符串形式提供密码 最后我希望加密的字符串也是十六进制字符串 这是
  • Julia 中随机输出的数组理解

    如果我今天早些时候问过这个问题 那么这个问题是一个延伸 https stackoverflow com questions 44097910 killing a for loop in julia array comprehension 基
  • 为什么使用 rand() 时会得到这种特定的颜色模式?

    我尝试创建一个图像文件 如下所示 uint8 t raw r pixel width pixel height uint8 t raw g pixel width pixel height uint8 t raw b pixel width

随机推荐