C# 用于加密图像文件的简单加密/解密方法

C# 用于加密图像文件的简单加密/解密方法,c#,encryption,C#,Encryption,我的要求是我需要C#中的简单加密/解密方法来加密和解密 解密图像(可能是gif/jpeg)。原因很简单,我必须将其存储在BLOB字段中的数据库中,而其他一些编程语言(如java)的开发人员可能需要提取并显示此图像。我不需要太多安全性,因为这只是一个“模糊安全”(life)问题 吞咽..有人能帮忙吗..看看名称空间 这里有一篇关于 您的问题非常笼统-链接文章提供了使用内置函数进行加密的示例。由于您“不需要太多安全性”,您可能可以通过以下方式勉强解决。它使用一个对称密钥,在.NET框架中有很多帮助,

我的要求是我需要C#中的简单加密/解密方法来加密和解密 解密图像(可能是gif/jpeg)。原因很简单,我必须将其存储在BLOB字段中的数据库中,而其他一些编程语言(如java)的开发人员可能需要提取并显示此图像。我不需要太多安全性,因为这只是一个“模糊安全”(life)问题

吞咽..有人能帮忙吗..

看看名称空间

这里有一篇关于

您的问题非常笼统-链接文章提供了使用内置函数进行加密的示例。

由于您“不需要太多安全性”,您可能可以通过以下方式勉强解决。它使用一个对称密钥,在.NET框架中有很多帮助,使其易于实现。你可能会发现有很多有用的信息

这是一个非常精简的加密/解密方法示例,可用于处理字节数组(二进制内容)


您是否正在使用MS SQL 2005或更高版本?如果你想走那条路,你可以加密一列。。。此加密是否会更改图像文件格式?@Mani否不会。加密会扰乱文件的内容(无论其类型如何)。解密(使用用于加密的适当补充方法和相关密钥)只会反转加密数据以恢复原始文件内容,而不会更改文件类型。
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

public class RijndaelHelper
{
    // Example usage: EncryptBytes(someFileBytes, "SensitivePhrase", "SodiumChloride");
    public static byte[] EncryptBytes(byte[] inputBytes, string passPhrase, string saltValue)
    {
        RijndaelManaged RijndaelCipher = new RijndaelManaged();

        RijndaelCipher.Mode = CipherMode.CBC;
        byte[] salt = Encoding.ASCII.GetBytes(saltValue);
        PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, salt, "SHA1", 2);

        ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(password.GetBytes(32), password.GetBytes(16));

        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write);
        cryptoStream.Write(inputBytes, 0, inputBytes.Length);
        cryptoStream.FlushFinalBlock();
        byte[] CipherBytes = memoryStream.ToArray();

        memoryStream.Close();
        cryptoStream.Close();

        return CipherBytes;
    }

    // Example usage: DecryptBytes(encryptedBytes, "SensitivePhrase", "SodiumChloride");
    public static byte[] DecryptBytes(byte[] encryptedBytes, string passPhrase, string saltValue)
    {
        RijndaelManaged RijndaelCipher = new RijndaelManaged();

        RijndaelCipher.Mode = CipherMode.CBC;
        byte[] salt = Encoding.ASCII.GetBytes(saltValue);
        PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, salt, "SHA1", 2);

        ICryptoTransform Decryptor = RijndaelCipher.CreateDecryptor(password.GetBytes(32), password.GetBytes(16));

        MemoryStream memoryStream = new MemoryStream(encryptedBytes);
        CryptoStream cryptoStream = new CryptoStream(memoryStream, Decryptor, CryptoStreamMode.Read);
        byte[] plainBytes = new byte[encryptedBytes.Length];

        int DecryptedCount = cryptoStream.Read(plainBytes, 0, plainBytes.Length);

        memoryStream.Close();
        cryptoStream.Close();

        return plainBytes;
    }
}