c# - .NET 加密字节数组

标签 c# .net encryption

有什么方法可以不使用流来加密字节数组吗??

最佳答案

事实上,您根本不需要使用任何流来操作字节。 您唯一需要做的就是调用 ICryptoTransform 的 TransformFinalBlock() 方法,它可以是从 SymmetricAlgorithm 类派生的任何算法的加密器或解密器

public class CryptoProvider
{
    private SymmetricAlgorithm _algorithm = new RijndaelManaged();

    public byte[] EncryptData(byte[] data, string password)
    {
        GetKey(password);

        ICryptoTransform encryptor = _algorithm.CreateEncryptor();

        byte[] cryptoData = encryptor.TransformFinalBlock(data, 0, data.Length);

        return cryptoData;
    }

    public byte[] DecryptData(byte[] cryptoData, string password)
    {
        GetKey(password);

        ICryptoTransform decryptor = _algorithm.CreateDecryptor();

        byte[] data = decryptor.TransformFinalBlock(cryptoData, 0, cryptoData.Length);

        return data;
    }

    private void GetKey(string password)
    {
        byte[] salt = new byte[8];

        byte[] passwordBytes = Encoding.ASCII.GetBytes(password);

        int length = Math.Min(passwordBytes.Length, salt.Length);

        for (int i = 0; i < length; i++)
            salt[i] = passwordBytes[i];

        Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password, salt);

        _algorithm.Key = key.GetBytes(_algorithm.KeySize / 8);
        _algorithm.IV = key.GetBytes(_algorithm.BlockSize / 8);

    }
}

关于c# - .NET 加密字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/605498/

相关文章:

android - Android客户端和PHP服务器之间的加密

java - 解密错误填充错误

c# - 通过 P/Invoke 使用回调和堆对象的安全方法

c++ - 函数 CryptEncrypt 期间崩溃

c# - 如何将固定电话通话记录保存到数据库

c# - 如何设置另一个应用程序焦点并使其成为事件窗口

c# - 获取除英语以外其他语言的国家列表

.net - azure 应用程序服务从 web.debug.config 读取自定义环境变量而不是配置菜单变量

c# - 在 youtube api .net 中按 ID 获取 youtube 播放列表

c# - 将sql查询结果传递给文本框