作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:我编写了一对用于 AES 加密/解密的 .NET 函数。
我想将 IV 和密文存储在单个 base64 编码字符串中,类似于 described here .
我见过散列 this example他将 salt 字节附加到哈希字节的末尾,然后 base64 对新数组进行编码。然后,在验证哈希时,他对base64字符串进行解码,并拆分出salt和哈希字节。
我的问题是:是否有明确的标准来描述我应该如何执行串联,以便我的 base64 编码数据可以被其他程序解析和解密?还是仅由我作为程序员来编写我的加密/解密函数来解析我认为合适的数据?
标准会回答这样的问题:我是否将 IV 字节添加到密文字节的前面或后面?
我理想的函数签名应该是这样的:
// returns base64encodedCiphertextAndIV
string encrypt(string plaintext, string base64encodedKey)
// returns plaintext
string decrypt(string base64encodedCiphertextAndIV, string base64encodedKey)
最佳答案
将 IV 添加到密文的前面非常好,而且非常标准。 IV 不必保密,只有 key 必须保密。如果您正在使用 CTR 模式,那么 IV 在给定 key 中是唯一的非常重要。如果您使用 CBC 模式,拥有唯一的 IV 很有用,但不是那么重要。
关于.net - 将 salt/IV 与散列/密文连接/编码的标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065927/
我是一名优秀的程序员,十分优秀!