zoukankan      html  css  js  c++  java
  • [转]C# 使用 256 位 AES 加密和解密文件

    本文转自:http://www.cnblogs.com/yaob/archive/2011/05/20/2051642.html

    听说 AES 加密是非常安全的, 256 位的甚至是美国神马安全局的加密标准.
    本着收藏不为人知的邪恶资料, 在网上找了一下怎么用 C# 去实现这个加密和解密. 很可惜的是, 网上的代码, 要么出错, 要么不完整, 甚至连微软 MSDN 的代码也讲的不清不楚. 自己经过多方面的整理之后, 得出了以下两段可用的代码. 希望对大家有所帮助.

    加密:

    public byte[] AesEncryptor(byte[] bsFile, string password)
    {
    RijndaelManaged aes
    = new RijndaelManaged();
    aes.Key
    = Encoding.UTF8.GetBytes(this.PasswordMD5(password));
    aes.IV
    = Encoding.UTF8.GetBytes(this.PasswordMD5(password).Substring(8, 16));
    aes.Mode
    = CipherMode.CBC;
    aes.Padding
    = PaddingMode.PKCS7;

    ICryptoTransform transform
    = aes.CreateEncryptor();
    return transform.TransformFinalBlock(bsFile, 0, bsFile.Length);
    }

    解密:

    public byte[] AesDecryptor(byte[] bsFile, string password)
    {
    RijndaelManaged aes
    = new RijndaelManaged();
    aes.Key
    = Encoding.UTF8.GetBytes(this.PasswordMD5(password));
    aes.IV
    = Encoding.UTF8.GetBytes(this.PasswordMD5(password).Substring(8, 16));
    aes.Mode
    = CipherMode.CBC;
    aes.Padding
    = PaddingMode.PKCS7;

    ICryptoTransform transform
    = aes.CreateDecryptor();
    return transform.TransformFinalBlock(bsFile, 0, bsFile.Length);
    }

    使用说明:

    用法其实非常简单. 两法方法都差不多, 简单说一下.
    传入文件的 byte 数组, 以及密码. 因为这个 256 位的 key 是需要 32 位的, 而 IV 是需要 16 位, 于是我用了一个 PasswordMD5 来将密码处理为 32 位. 如果你还不知道怎么 MD5, 可以看我之前的文章.
    另外就是, KEY 和 IV 都是解密的时候要用到的, 且两个值必须正确, 才能成功解开.
    两个方法的返回值都是 byte 数组, 把数组用 File 类写入到文件中, 加密和解密就完成了~ 

  • 相关阅读:
    I NEED A OFFER!
    水题 Codeforces Round #303 (Div. 2) A. Toy Cars
    模拟 HDOJ 5099 Comparison of Android versions
    模拟 HDOJ 5095 Linearization of the kernel functions in SVM
    贪心 HDOJ 5090 Game with Pearls
    Kruskal HDOJ 1863 畅通工程
    Kruskal HDOJ 1233 还是畅通工程
    并查集 HDOJ 1232 畅通工程
    DFS/并查集 Codeforces Round #286 (Div. 2) B
    水题 Codeforces Round #286 (Div. 2) A Mr. Kitayuta's Gift
  • 原文地址:https://www.cnblogs.com/freeliver54/p/2203262.html
Copyright © 2011-2022 走看看