将salt / IV与hash / ciphertext连接/编码的标准?

时间:2012-04-08 19:48:51

标签: .net encryption hash standards aes

后台:我为AES加密/解密编写了一对.NET函数。

我希望将带有密文的IV存储在单个base64编码的字符串中,类似于described here

我见过散列this example,他将salt字节附加到散列字节的末尾,然后base64对新数组进行编码。然后,在验证散列时,他解码base64字符串,并拆分salt和hash字节。

我的问题是:是否有定义的标准描述了我应该如何执行连接,以便可以解析我的base64编码数据&其他程序解密?或者,作为程序员,我可以根据自己的需要编写加密/解密函数来解析数据吗?

标准将回答以下问题:我是否将IV字节前置或附加到密文字节?

我理想的函数签名如下:

// returns base64encodedCiphertextAndIV
string encrypt(string plaintext, string base64encodedKey)  

// returns plaintext
string decrypt(string base64encodedCiphertextAndIV, string base64encodedKey)

1 个答案:

答案 0 :(得分:2)

将IV添加到密文的前面是非常好的,而且非常标准。 IV不必保密,只有钥匙必须保密。如果您使用CTR模式,那么IV在给定密钥中是唯一的非常重要。如果您使用CBC模式,那么拥有独特的IV是有用的,但不是那么重要。