.net - 将 salt/IV 与散列/密文连接/编码的标准?

背景:我编写了一对用于 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 很有用,但不是那么重要。

https://stackoverflow.com/questions/10065927/

相关文章:

snmp - SNMPv3 是否需要使用用户名/身份验证和社区字符串?

xslt-2.0 - XSL 中的显式类型变量

asp.net - SSRS 报告缓慢加载第一份报告

php - PDOStatement::fetch() 说明

python - 从 python 脚本启动 python IDLE

visual-studio - 如何在 Visual Studio 2008 的左侧显示 "file

activex - 是否有 MsStkPrp.dll 的 x64 版本

assembly - ARM7TDMI(GameBoy Advance)上操作系统相关的操作和模式

ms-access - MS Access - 使用相同的记录 ID 转到另一个子表单

xcode - Xcode 中的 "Canvas"选项在哪里?