当前位置:  开发笔记 > 编程语言 > 正文

.NET加密bytearray

如何解决《.NET加密bytearray》经验,为你挑选了2个好方法。

有没有办法在不使用流的情况下加密bytearray?



1> 小智..:

实际上,您根本不需要使用任何流来操作字节.您唯一需要的是调用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);

    }
}



2> Noah..:

如果您担心磁盘I/O,可以使用MemoryStream.

但是,RSACryptoServiceProvider类将在字节数组上运行.此类使用RSA算法的实现执行非对称加密和解密.

这里的示例显示了如何使用字节数组执行此操作

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有