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

标签 .net encryption hash standards aes

背景:我编写了一对用于 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/

相关文章:

python - Cocoa (Obj-C) 中使用大数的 Mod 函数

hash - 用于分析的 Redis key 方案

c# - 聚焦时如何自动打开组合框?

sockets - 知道基本加密聊天的任何好例子吗? (GnuTLS?)

c# - TimeZoneInfo 和夏令时

objective-c - 使用 Transforms/Security.framework 的 RSA 加密 + Objective-C

ios - 用于测试 facebookAds 的设备的散列 ID?

python - 对大文件同时计算 MD5 和 SHA1

c# - 可以在 .NET Standard 库之间共享版本信息吗?

.net - 动态表行未通过 jquery ajax 调用更新