gpt4 book ai didi

c# - 使用 Rijndael 算法加密文件

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:02 26 4
gpt4 key购买 nike

我在一个网站上找到了这段代码

private void EncryptFile(string inputFile)
{

string password = @"myKey123"; // Your Key Here
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);

string cryptFile = inputFile + ".enc";
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

RijndaelManaged RMCrypto = new RijndaelManaged();

CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);

FileStream fsIn = new FileStream(inputFile, FileMode.Open);

int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);


fsIn.Close();
cs.Close();
fsCrypt.Close();

}

我有两个问题。第一个是 password 部分。我有一个生成随机字符串的函数:

public string CreatePassword(int length)
{
const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=?&/";
StringBuilder res = new StringBuilder();
Random rnd = new Random();
while (0 < length--){
res.Append(valid[rnd.Next(valid.Length)]);
}
return res.ToString();
}

当我这样编辑代码时:

string password = CreatePassword(8);

它有效。但是当我增加密码大小(比如 10)时,我得到了这个错误:

An unhandled exception of type 'System.Security.Cryptography.CryptographicException' occurred in mscorlib.dll

有没有办法增加密码长度?或者我们可以认为 8 长度是安全的吗?

其他问题:

我的输出文件是 inputFile + ".enc" 当我删除 ".enc" 部分时,我得到了“这个文件被另一个进程使用”的错误。如何将加密的写成原始的?

最佳答案

RijndaelManaged 有规则。以下命令用于准备算法:

RMCrypto.CreateEncryptor(key, key)

第一个参数是 key ,它必须是 128、192 或 256 位。第二个参数是 IV。在给定的例子中,key 和 IV 是一样的。密码文本使用 unicode 转换为字节,因此长度为 16 字节 = 128 位。因此,如果您使用不同的尺寸,则规则会出错。

您可以更好地查看以下文章: Encrypting & Decrypting a String in C#

关于c# - 使用 Rijndael 算法加密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32026729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com