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

问题描述

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"; }
//}

    ///// <summary>
    ///// 获取向量
    ///// </summary>
    //private static string IV
    //{
    //    get { return @"L+~f4,Ir)b$=pkf"; }
    //}
    //public static void Decrypt<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,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);
    }
}

}


新手,求告诉,怎么把这结合起来

解决方案

string oldStr1 = "你要加密的明文字符串";

string newStr = AES.AESEncrypt(oldStr);

string oldStr2 = AES.AESDecrypt(newStr);

//oldStr1和oldStr2应该相等

解决方案二:

直接引用这个类
然后申明一个实例,调用AESEncrypt来加密,AESDecrypt解密

解决方案三:

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

namespace Encrypt
{
///
/// Description of AESEncrypt.
///
public class AESEncrypt
{
public AESEncrypt()
{......
答案就在这里:C#_AES加密

时间: 2024-09-20 20:39:41

c# 加密-C# AES加密的问题~~~~的相关文章

标准PHP的AES加密算法类

 AES是分组密钥,算法输入128位数据,密钥长度也是128位.用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列).每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与.     分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识.   代码如下

DES、3DES、AES加密方式

DES 支持8位加密解密,3Des支持24位,Aes支持32位.3Des是Des算法做三次.位数的单位是字节byte,不是bits. 3Des是把24位分成3组,第一组八位用来加密,第二组8位用于解密,第三组8位用于加密,所以,如果秘钥为123456781234567812345678(3组1-8),则相当于做了一次12345678的Des加密.例如:第一次用12345678秘钥对123进行加密得到 "LDiFUdf0iew=",然后用第二组的12345678对其进行解密(逆向加密过程

php中AES加密解密的例子小结

 话不多说,先放上代码,一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件) aesDemo.php:   例子,    代码如下: <?php require_once('./AES.php'); //$aes = new AES(); $aes = new AES(true);// 把加密后的字符串按十六进制进行存储 //$aes = new AES(true,true);// 带有调试信息且加密字符串按十六进制存储 $key = "this is

对称加密之AES及压缩加密解密解压综合实战

 对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 由此可见密钥传递也是比较重要的一环,一般都是通过对密钥二次加密的方式,进行密钥的传输 加密实现代码: public static byte[] encryptStringToBytes_AES(b

php实现aes加密类分享

 这篇文章主要介绍了php实现的aes加密类,代码中有使用方法,需要的朋友可以参考下  代码如下: <?php   class AESMcrypt {    public $iv = null;  public $key = null;  public $bit = 128;  private $cipher;    public function __construct($bit, $key, $iv, $mode) {   if(empty($bit) || empty($key) || e

Node.js中AES加密和其它语言不一致问题解决办法

 这篇文章主要介绍了Node.js中AES加密和其它语言不一致问题解决办法,例如和C#.JAVA语言相互通信时,需要的朋友可以参考下 例子一:   这几天被一个问题困扰着.Nodejs的AES加密和Java,C#加密出来的不一致.当然,这样就不能解密了.纠结了许久:后来还是实在不行了,看了下源代码,要不然还得继续纠结下去.网上说,通常的nodejs AES和其他语言实现不一样.好吧~~或许吧. nodejs的crypto模块.    代码如下: var crypto = require('cry

算法-C#AES加密时,怎么产生密钥和密钥向量?

问题描述 C#AES加密时,怎么产生密钥和密钥向量? 各位大神好,最近在做一个一个项目,牵扯到加密,网上搜到了加密算法,但是不知道AES的机密密钥和密钥向量怎么产生?烦请各位为小弟指点一下~ 解决方案 /// AES加密 /// </summary> /// <param name=""inputdata"">输入的数据</param> /// <param name=""iv""&g

Android数据加密之Aes加密_Android

前言: 项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密.  其他几种加密方式:  •Android数据加密之Rsa加密  •Android数据加密之Aes加密  •Android数据加密之Des加密  •Android数据加密之MD5加密  •Android数据加密之Base64编码算法  •Android数据加密之SHA安全散列算法  什么是aes加密?       高级加密标准(英语:Advanced Encryption Standa

标准PHP的AES加密算法类_php技巧

分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识. 复制代码 代码如下: <?php /**  * AES128加解密类  * @author dy  *  */ defined('InEjbuy') or exit('Access Invalid!'); class Aes{     //密钥