C# ASP.NET-加密文件
我正在使用ASP.NET执行一项任务,其中用户必须上载一个文件,我使用已完成的加密算法进行加密。文件的属性是:C# ASP.NET-加密文件,c#,asp.net-mvc,file,encryption,C#,Asp.net Mvc,File,Encryption,我正在使用ASP.NET执行一项任务,其中用户必须上载一个文件,我使用已完成的加密算法进行加密。文件的属性是:ID、名称、和标记。现在,在我加密字符串之前,比如一个名字,但是,我从来没有加密过一个文件,也没有关于它的任何线索 我到底需要加密什么? 加密算法: public static void HybridEncrypt(string publicKey, MemoryStream fileToEncrypt, string filenameOfTheOutputFile) { va
ID
、名称
、和标记
。现在,在我加密字符串之前,比如一个名字,但是,我从来没有加密过一个文件,也没有关于它的任何线索
我到底需要加密什么?
加密算法:
public static void HybridEncrypt(string publicKey, MemoryStream fileToEncrypt, string filenameOfTheOutputFile)
{
var publicKeyPath = Path.Combine(Directory.GetCurrentDirectory(), "\\publickey.key");
Rijndael myAlg = Rijndael.Create();
myAlg.GenerateIV(); //this is another method how to generate the secret key and iv
myAlg.GenerateKey();
byte[] keyStream = myAlg.Key;
byte[] IVstream = myAlg.Key;
MemoryStream msFileDataEncrypted = SymmetricEncryptData(fileToEncrypt, keyStream, IVstream);
MemoryStream keyStreamEncrypt = new MemoryStream(myAlg.Key);
MemoryStream msEncryptedSecretKey = new Encryption().AsymmetricallyEncrypt(publicKeyPath, keyStreamEncrypt);
MemoryStream IVStreamEncrypt = new MemoryStream(myAlg.IV);
MemoryStream msEncryptedIV = new Encryption().AsymmetricallyEncrypt(publicKeyPath, IVStreamEncrypt);
MemoryStream msAll = new MemoryStream();
msEncryptedSecretKey.Position = 0;
msEncryptedIV.Position = 0;
msFileDataEncrypted.Position = 0;
msEncryptedSecretKey.CopyTo(msAll);
msEncryptedIV.CopyTo(msAll);
msFileDataEncrypted.CopyTo(msAll);
System.IO.File.WriteAllBytes(filenameOfTheOutputFile, msAll.ToArray());
}
最有可能的是,您的初始向量大小小于16字节。您需要增加初始向量大小 您需要解决三件事
byte[]IVstream=myAlg.Key代码>至字节[]IVstream=myAlg.IV代码>
httppostedfilebase转换为memorystream c#
来加密文件,然后作为fileToEncrypt
param传递,而不是Encoding.UTF32.GetBytes(stringvale)
ID、Name和tags
仅存储在数据库中的信息,无需加密这里的问题到底是什么?如何解决异常或“我应该加密什么?”。请一次只关注一个问题,这样更容易提供有价值的具体答案代码>?它应该是
byte[]IVstream=myAlg.IV代码>我想没问题,所以我删除了我的错误。。我的实际问题是,我到底要加密什么来加密文件?例如,如果我有一个table person,并且我想要加密名称,那么我会加密字段firstName。。现在,如果我想加密一个文件,我应该加密什么?实际上,您并没有加密字段值或文件。您正在加密字节数组<示例中的code>MemoryStream fileToEncrypt
只是一个包装器,可以提供一组要加密的字节。所以它看起来像1)获取字节(流式传输)2)加密这些字节。以下是在加密之前将字符串转换为字节的方法(只是不要与流混淆)。谢谢你的回复。。我设法把它修好了。。谢谢:D