在开始之前,我知道stackoverflow上有很多类似的问题,但大部分答案都包含大量代码,没有任何解释或帮助用户。
我需要做的是相当简单,从用户输入字符串作为输入,然后输入密码,然后用密码加密字符串并将密文写入文件。然后在用户想要的更晚的日期,从文件中读取密文并对其进行解密并向用户显示原始纯文本。我可以处理文件的写入,我只需要帮助加密字符串。 (注意:我不想只加密/解密整个文件 - 因为它必须包含一些未加密的东西 - 只是程序中的一个字符串)
此外,所需的“初始化矢量” - 可以与密码相同吗?或者它可以简单地硬编码到程序中?它对于安全性是否至关重要?如果没有,那么用户是否必须记住密码和IV?
另一件事,当用户来解密并输入错误的密码时,Rijndael类中的方法只会引发错误或者是什么?
我对C#很熟悉,但我不熟悉加密技术,所以如果你能引导我完成任何代码或回答你的帖子,我将非常感激。
由于
答案 0 :(得分:2)
大多数Rijndael模式都需要IV,通常只需将其添加到密文中,无需用户记住。
由于您使用用户键入的密码进行解密,因此您希望使用Authenticated Encryption以便您的程序可以安全地重新提示是否输入了错误的密码,否则您的程序可能不会给出任何指示发出并吐出随机文本。
我有一个使用AES-CBC和HMAC-SHA256身份验证的示例,我尝试并保持最新和审查,它实际上有一个帮助方法,只用明文和密码处理加密,并且也有很好的评论:
Modern Examples of Symmetric Authenticated Encryption of a string. C#
答案 1 :(得分:1)
您需要执行以下步骤:
PBKDF2在Rfc2898DeriveBytes
。
请注意,此答案仅说明如何实现机密性,而不是完整性或真实性。