`
whitesmith
  • 浏览: 16790 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

AES加密

阅读更多
AES算法描述简介:

DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对AES还有不同的看法,但总体来说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍。

CS代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Security.Cryptography;
using System.Text;
using System.IO;

/// <summary>
/// Class1 的摘要说明
/// </summary>
public class AESEncryption
{
    //默认密钥向量
    //AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍。

    private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
    private static string strKey = "dongbinhuiasxiny";

    /// <summary>  
    /// AES加密算法  
    /// </summary>  
    /// <param name="plainText">明文字符串</param>  
    /// <param name="strKey">密钥</param>  
    /// <returns>返回加密后的密文字节数组</returns>  
    public static byte[] AESEncrypt(string plainText)
    {
        //分组加密算法  
        SymmetricAlgorithm des = Rijndael.Create();
        byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组      
        //设置密钥及密钥向量  
        des.Key = Encoding.UTF8.GetBytes(strKey);
        des.IV = _key1;
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
        cs.Write(inputByteArray, 0, inputByteArray.Length);
        cs.FlushFinalBlock();
        byte[] cipherBytes = ms.ToArray();//得到加密后的字节数组  
        cs.Close();
        ms.Close();
        return cipherBytes;
    }

    /// <summary>  
    /// AES解密  
    /// </summary>  
    /// <param name="cipherText">密文字节数组</param>  
    /// <param name="strKey">密钥</param>  
    /// <returns>返回解密后的字符串</returns>  
    public static byte[] AESDecrypt(byte[] cipherText)
    {
        SymmetricAlgorithm des = Rijndael.Create();
        des.Key = Encoding.UTF8.GetBytes(strKey);
        des.IV = _key1;
        byte[] decryptBytes = new byte[cipherText.Length];
        MemoryStream ms = new MemoryStream(cipherText);
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
        cs.Read(decryptBytes, 0, decryptBytes.Length);
        cs.Close();
        ms.Close();
        return decryptBytes;
    }
}

ASPX 调用代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string text = "AES加密算法测试数据"; //明文  
            
        byte[] encryptBytes = AESEncryption.AESEncrypt(text);
        Label1.Text = "明文:"+text;
        Label2.Text= "加密后:"+Convert.ToBase64String(encryptBytes);

        byte[] decryptBytes = AESEncryption.AESDecrypt(encryptBytes);
        //将解密后的结果转换为字符串,也可以将该步骤封装在解密算法中  
        string result = Encoding.UTF8.GetString(decryptBytes);
        Label3.Text = "解密后:"+result;


       
    
  
    }
}

ASPX 页面代码
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
       
        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
      
        <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label></div>
    </form>
</body>
</html>
分享到:
评论

相关推荐

    Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes

    本资源"Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes"提供的是在Delphi编程环境中实现AES加密和解密的示例代码,其目标是与Java平台上的加解密过程保持兼容。 首先,让我们深入了解一下...

    aes加密算法delphi

    ### AES加密算法在Delphi中的实现 AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,被广泛应用于数据安全领域。它采用固定的数据块大小(128位),支持128、192或256位密钥长度。在Delphi中...

    java AES加密 解决加密过长非法异常问题

    在处理加密过程中,可能会遇到“非法参数”异常,这通常是因为输入数据长度不符合AES加密的要求。AES加密算法有固定的数据块大小,对于AES-128,这个大小是16个字节(或128位)。当输入数据长度不是16字节的倍数时,...

    QT 实现AES 加密算法

    AES加密算法基于替换和置换的原理,它使用了固定的区块大小128位,并有三种密钥长度:128位、192位和256位。在AES加密过程中,数据被分为128位的数据块,然后经过多次的混合和轮变换,使得原始数据变得难以破解。 ...

    STM32F103程序AES加密.zip_STM32 AES加密_aes stm32f103_stm32f103 硬件aes_

    在"STM32F103程序AES加密.zip"这个压缩包中,包含了STM32F103使用AES加密的示例代码。通过分析这个例程,我们可以学习如何配置硬件AES模块,设置密钥,以及如何进行数据的加密和解密操作。以下是一些关键知识点: 1...

    c++ AES加密.zip

    C++实现AES加密通常涉及到几个关键概念和步骤,这些在"VS2013下调试的c++ AES加密"资源中应该都有涵盖。 1. **AES算法原理**: AES是一种分组密码,它将明文数据分割成128位的块,并使用相同的密钥对每个块进行...

    Qt实现AES加密解密

    在Qt中,我们可以利用QCryptographicHash、QByteArray和QBuffer等类来实现AES加密和解密。 1. **AES加密算法**: AES有三种不同的密钥长度,即128位(AES_128)、192位(AES_192)和256位(AES_256)。这些长度的选择直接...

    AES加密算法Dll

    AES加密算法Dll是一个用于在项目中实现AES加密功能的动态链接库(Dll)文件。AES,全称为“高级加密标准”(Advanced Encryption Standard),是一种广泛应用于数据加密的标准算法,尤其在网络安全、数据保护和隐私...

    AES加密算法 Delphi7

    AES加密算法,全称为Advanced Encryption Standard,是一种广泛应用的对称加密算法,因其高效性和安全性而备受推崇。在Delphi7这个古老的编程环境中,实现AES加密同样是非常重要的,特别是在保护数据安全、实现通信...

    VB6-AES加密算法源码.rar

    VB6-AES加密算法源码是一个用于VB6(Visual Basic 6)开发环境的加密工具,它实现了AES(Advanced Encryption Standard)加密标准。AES是一种广泛使用的对称加密算法,为数据提供高强度的安全保护。该源码经过验证,...

    新建 WinRAR 压缩文件.rar_AES_AES 加密_STM32 aes加密

    标题 "新建 WinRAR 压缩文件.rar_AES_AES 加密_STM32 aes加密" 指涉了一个关于使用AES(高级加密标准)加密技术的项目,特别提到了它与STM32微控制器的结合。这个压缩包包含了实现AES加密的源代码文件,如`aes.c`和...

    android使用AES加密和解密文件实例代码

    Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密和解密文件是一种常见的安全措施。本文将详细介绍 Android 使用 AES 加密和解密文件的实例代码,并...

    AES加密/解密算法,基于MFC下的 VC6.0

    3. **密钥扩展**:AES的密钥长度可以不同,但都需要通过密钥扩展转换成多个轮密钥,这是AES加密过程的关键步骤。 4. **初始化上下文**:调用库提供的函数初始化AES上下文,比如在OpenSSL中,可以使用`AES_set_...

    数据aes加密sbox

    ### 数据AES加密SBox知识点详解 #### 一、AES加密简介 高级加密标准(Advanced Encryption Standard,AES)是一种对称密钥加密技术,用于保护电子数据的安全。它是由美国国家标准与技术研究院(NIST)在2001年确定...

    AES加密解密实验报告

    《AES加密解密实验报告》 AES,全称为高级加密标准(Advanced Encryption Standard),是密码学领域中的一个重要标准,由美国联邦政府采纳,用于替换原有的DES加密算法。AES由比利时密码学家Joan Daemen和Vincent ...

    AES加密算法(C++实现,附源码)

    AES加密算法,全称为Advanced Encryption Standard,是一种广泛应用的对称加密技术,用于保护数据的机密性。在C++环境中实现AES加密算法,通常涉及到的关键概念包括密钥、明文、密文、加密过程和解密过程。源码中...

    本地图片AES加密解密

    "本地图片AES加密解密"是一个针对这个问题提出的技术方案,旨在保护存储在本地设备上的图片不被未经授权的第三方访问。AES(Advanced Encryption Standard)加密是一种广泛应用的对称加密算法,因其高效和安全性而...

    Qt中可用的AES加密程序.zip

    本项目以Qt为开发环境,提供了一个AES加密程序的实现,对于初学者而言,这是一个很好的学习资源。 首先,我们来了解一下AES加密算法。AES是一种块密码,它将明文数据分为128位的块进行处理。它使用了固定长度的密钥...

    AES加密任意长度的字符串和任意大小的文件

    AES加密算法有三个主要的变种:AES-128、AES-192和AES-256,分别使用128位、192位和256位的密钥,其中AES-128已经足够安全,但对于高度敏感的数据,AES-256提供了更高的安全性。 在描述中提到的问题,即“网上很多...

    不用cryptoJs的aes加密解密

    通常,开发者会使用像cryptoJs这样的库来实现AES加密和解密功能,因为它提供了方便的API。然而,在某些情况下,我们可能需要不依赖任何特定库来实现AES,而是直接使用JavaScript原生功能或自定义代码。这个场景描述...

Global site tag (gtag.js) - Google Analytics