qq_29651709 2015-07-17 01:06 采纳率: 17.6%
浏览 1750

C# AES加密的问题~~~~

将从CSV文件中读取到的身份证号码加密,要求使用AES加密,加密的函数接口请调用”AES.CS”源文件。
ASE.CS源文件的代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Utility
{
public class AES
{
/////
///// 获取密钥
/////
//private static string Key
//{
// get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }
//}
/////
///// 获取向量
/////
//private static string IV
//{
// get { return @"L+~f4,Ir)b$=pkf"; }
//}
//public static void Decrypt(T info)
//{

//    foreach (var property in info.GetType().GetProperties())
//    {
//        var pro = property.CustomAttributes.FirstOrDefault(a => a.AttributeType.Name == "DecodeAttribute");
//        if (pro != null)
//         {
//            property.SetValue(info,AESDecrypt(property.GetValue(info).ToString()));
//        }
//    }
//}
//public static void Encrypt<T>(T info)
//{
//    foreach (var property in info.GetType().GetProperties())
//    {
//        var pro = property.CustomAttributes.FirstOrDefault(a => a.AttributeType.Name == "DecodeAttribute");
//        if (pro!=null)
//        {
//            property.SetValue(info, AESEncrypt(property.GetValue(info).ToString()));
//        }
//    }
//}
/// <summary>
/// AES加密
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <returns>密文</returns>
public static string AESEncrypt(string plainStr)
{
    byte[] bKey = Encoding.UTF8.GetBytes(Config.aesKey);
    byte[] bIV = Encoding.UTF8.GetBytes(Config.aesIV);
    byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);

    string encrypt = null;
    Rijndael aes = Rijndael.Create();
    try
    {
        using (MemoryStream mStream = new MemoryStream())
        {
            using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
            {
                cStream.Write(byteArray, 0, byteArray.Length);
                cStream.FlushFinalBlock();
                encrypt = Convert.ToBase64String(mStream.ToArray());
            }
        }
    }
    catch { }
    aes.Clear();

    return encrypt;
}

/// <summary>
/// AES加密
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <param name="returnNull">加密失败时是否返回 null,false 返回 String.Empty</param>
/// <returns>密文</returns>
public static string AESEncrypt(string plainStr, bool returnNull)
{
    string encrypt = AESEncrypt(plainStr);
    return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);
}

/// <summary>
/// AES解密
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <returns>明文</returns>
public static string AESDecrypt(string encryptStr)
{
    byte[] bKey = Encoding.UTF8.GetBytes(Config.aesKey);
    byte[] bIV = Encoding.UTF8.GetBytes(Config.aesIV);
    byte[] byteArray = Convert.FromBase64String(encryptStr);

    string decrypt = null;
    Rijndael aes = Rijndael.Create();
    try
    {
        using (MemoryStream mStream = new MemoryStream())
        {
            using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
            {
                cStream.Write(byteArray, 0, byteArray.Length);
                cStream.FlushFinalBlock();
                decrypt = Encoding.UTF8.GetString(mStream.ToArray());
            }
        }
    }
    catch { }
    aes.Clear();

    return decrypt;
}

/// <summary>
/// AES解密
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <param name="returnNull">解密失败时是否返回 null,false 返回 String.Empty</param>
/// <returns>明文</returns>
public static string AESDecrypt(string encryptStr, bool returnNull)
{
    string decrypt = AESDecrypt(encryptStr);
    return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);
}

}

}

AES加密代码知道了,现在怎么把读取出来的身份证和代码联系起来

  • 写回答

3条回答 默认 最新

  • Robot-C 2015-07-17 01:09
    关注

    using System;
    using System.Security.Cryptography;
    using System.Text;

    namespace Encrypt
    {
    /// <summary>
    /// Description of AESEncrypt.
    /// </summary>
    public class AESEncrypt......
    答案就在这里:C#_AES加密
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥50 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗