Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何加密从文本框输入的数据?_C#_Visual Studio 2010_Encryption_Datagridview - Fatal编程技术网

C# 如何加密从文本框输入的数据?

C# 如何加密从文本框输入的数据?,c#,visual-studio-2010,encryption,datagridview,C#,Visual Studio 2010,Encryption,Datagridview,我不知道如何加密从文本框输入的数据。输入的数据将显示在DataGridView中的下一个表单上。我的问题是,当数据出现在DataGridView上时,我想对其进行加密。我正在Microsoft Visual Studio 2010中使用C#。谢谢 frmUsers f2 = new frmUsers(); private void button1_Click(object sender, EventArgs e) { setGrid(); } public void setGrid(

我不知道如何加密从文本框输入的数据。输入的数据将显示在DataGridView中的下一个表单上。我的问题是,当数据出现在DataGridView上时,我想对其进行加密。我正在Microsoft Visual Studio 2010中使用C#。谢谢

frmUsers f2 = new frmUsers();

private void button1_Click(object sender, EventArgs e)
{
    setGrid();
}

public void setGrid() {

    f2.dataGridView1.Columns.Add("COL1", "Firstname");
    f2.dataGridView1.Columns.Add("COL1", "Lastname");
    f2.dataGridView1.Columns.Add("COL1", "Email");
    f2.dataGridView1.Columns.Add("COL1", "Password");
    f2.Show();

    f2.dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text);

}

下面是一个用于加密和解密具有指定密码短语的字符串的代码。请记住,您应该使用加密的确切密码解密密码

public static class Crypto
{
    public static string Encrypt(string text, string secret)
    {
        if (string.IsNullOrEmpty(text))
            throw new ArgumentNullException("text");
        if (string.IsNullOrEmpty(secret))
            throw new ArgumentNullException("secret");

        var salt = Encoding.UTF8.GetBytes(secret);

        using (var aes = new RijndaelManaged())
        {
            var key = new Rfc2898DeriveBytes(secret, salt);

            aes.Key = key.GetBytes(aes.KeySize / 8);

            var encryptor = aes.CreateEncryptor(aes.Key, aes.IV);

            using (var ms = new MemoryStream())
            {
                ms.Write(BitConverter.GetBytes(aes.IV.Length), 0, sizeof(int));
                ms.Write(aes.IV, 0, aes.IV.Length);
                using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                using (var sw = new StreamWriter(cs))
                {
                    sw.Write(text);
                }
                return Convert.ToBase64String(ms.ToArray());
            }
        }
    }

    public static string Decrypt(string cipher, string secret)
    {
        if (string.IsNullOrEmpty(cipher))
            throw new ArgumentNullException("cipher");
        if (string.IsNullOrEmpty(secret))
            throw new ArgumentNullException("secret");

        var salt = Encoding.UTF8.GetBytes(secret);

        using (var aes = new RijndaelManaged())
        {
            var key = new Rfc2898DeriveBytes(secret, salt);

            var bytes = Convert.FromBase64String(cipher);
            using (var ms = new MemoryStream(bytes))
            {
                aes.Key = key.GetBytes(aes.KeySize / 8);
                aes.IV = ReadByteArray(ms);

                var decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
                using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                using (var sr = new StreamReader(cs))
                {
                    return sr.ReadToEnd();
                }
            }
        }
    }

    private static byte[] ReadByteArray(Stream s)
    {
        var rawLength = new byte[sizeof(int)];
        if (s.Read(rawLength, 0, rawLength.Length) != rawLength.Length)
        {
            throw new SystemException("Stream did not contain properly formatted byte array");
        }

        var buffer = new byte[BitConverter.ToInt32(rawLength, 0)];
        if (s.Read(buffer, 0, buffer.Length) != buffer.Length)
        {
            throw new SystemException("Did not read byte array properly");
        }

        return buffer;
    }
}

您需要什么类型的加密?可能重复@dotctor-md5 encryption。对于密码加密,md5加密不安全。见我的答案谢谢你的建议。但是,我只是C语言的初学者,你的代码对我来说太复杂了。你能给我一些不同但简单的加密吗?