这扩展了凯尔的回答和你有关加密程序的问题他。
如果你想要一个简单的加密/解密模式,您可以使用这一个。 keyString是你的Salt,它可以让你稍后解密数据。我从一篇关于加密的博客文章中得到了这段代码,虽然今天可能会有更好的例程,但这个运行良好。
public static byte[] EncryptData(string keyString, byte[] dataToEncrypt)
{
if (keyString.IsNullOrEmptyTrimmed())
throw new ArgumentNullException("keyString", "You must provide a key string for salting.");
if (dataToEncrypt == null)
return null;
UTF8Encoding utf8 = new UTF8Encoding();
byte[] encryptedData;
MD5CryptoServiceProvider hashProvider = new MD5CryptoServiceProvider();
byte[] tdesKey = hashProvider.ComputeHash(utf8.GetBytes(keyString));
TripleDESCryptoServiceProvider tdesAlgorithm = new TripleDESCryptoServiceProvider();
tdesAlgorithm.Key = tdesKey;
tdesAlgorithm.Mode = CipherMode.ECB;
tdesAlgorithm.Padding = PaddingMode.PKCS7;
try
{
ICryptoTransform encryptor = tdesAlgorithm.CreateEncryptor();
encryptedData = encryptor.TransformFinalBlock(dataToEncrypt, 0, dataToEncrypt.Length);
}
finally
{
tdesAlgorithm.Clear();
hashProvider.Clear();
}
return encryptedData;
}
public static byte[] DecryptData(string keyString, byte[] encyptedData)
{
if (encyptedData == null)
return null;
byte[] decryptedData;
UTF8Encoding utf8 = new UTF8Encoding();
MD5CryptoServiceProvider hashProvider = new MD5CryptoServiceProvider();
byte[] tdesKey = hashProvider.ComputeHash(utf8.GetBytes(keyString));
TripleDESCryptoServiceProvider tdesAlgorithm = new TripleDESCryptoServiceProvider();
tdesAlgorithm.Key = tdesKey;
tdesAlgorithm.Mode = CipherMode.ECB;
tdesAlgorithm.Padding = PaddingMode.PKCS7;
try
{
ICryptoTransform decryptor = tdesAlgorithm.CreateDecryptor();
decryptedData = decryptor.TransformFinalBlock(encyptedData, 0, encyptedData.Length);
}
finally
{
tdesAlgorithm.Clear();
hashProvider.Clear();
}
return decryptedData;
}
更改文件扩展名不会阻止用户修改您的图像 –
否,但如果它不平凡明显,例如,当他们是.PNG。如果答案是“你可以做到这一点,但更好的答案也是加密/压缩它们,这里是一个加密/解密/压缩/解压缩库”,我很乐意听到这一点。 – Haighstrom
你可以使用任何你喜欢的事后生成事件,例如一个命令行,用密码或其他方式压缩文件。在运行时,您可以使用zip c#库对其进行解压缩。 –