legongju.com
我们一直在努力
2024-12-23 21:03 | 星期一

asp.net aes加密填充方式

在ASP.NET中,使用AES加密时,可以选择不同的填充方式。常见的填充方式有PKCS7、ISO10126和NoPadding。下面是一个使用AES加密和解密的示例,展示了如何使用不同的填充方式。

首先,确保已经安装了System.Security.Cryptography命名空间。

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

接下来,我们创建一个加密和解密的方法,分别使用PKCS7、ISO10126和NoPadding填充方式。

public static string Encrypt(string plainText, string key, string iv, PaddingMode paddingMode)
{
    using (Aes aes = Aes.Create())
    {
        aes.Key = Encoding.UTF8.GetBytes(key);
        aes.IV = Encoding.UTF8.GetBytes(iv);
        aes.Mode = CipherMode.CBC;
        aes.Padding = paddingMode;

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

        byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
        byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);

        return Convert.ToBase64String(encryptedBytes);
    }
}

public static string Decrypt(string cipherText, string key, string iv, PaddingMode paddingMode)
{
    using (Aes aes = Aes.Create())
    {
        aes.Key = Encoding.UTF8.GetBytes(key);
        aes.IV = Encoding.UTF8.GetBytes(iv);
        aes.Mode = CipherMode.CBC;
        aes.Padding = paddingMode;

        ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);

        byte[] encryptedBytes = Convert.FromBase64String(cipherText);
        byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);

        return Encoding.UTF8.GetString(decryptedBytes);
    }
}

现在,我们可以使用这些方法来加密和解密字符串。

string plainText = "Hello, World!";
string key = "abcdefghijklmnop";
string iv = "1234567890abcdef";

// 使用PKCS7填充方式加密
string encryptedTextPkcs7 = Encrypt(plainText, key, iv, PaddingMode.PKCS7);
Console.WriteLine("Encrypted text (PKCS7): " + encryptedTextPkcs7);

// 使用ISO10126填充方式加密
string encryptedTextIso10126 = Encrypt(plainText, key, iv, PaddingMode.ISO10126);
Console.WriteLine("Encrypted text (ISO10126): " + encryptedTextIso10126);

// 使用NoPadding填充方式加密
string encryptedTextNoPadding = Encrypt(plainText, key, iv, PaddingMode.NoPadding);
Console.WriteLine("Encrypted text (NoPadding): " + encryptedTextNoPadding);

// 使用PKCS7填充方式解密
string decryptedTextPkcs7 = Decrypt(encryptedTextPkcs7, key, iv, PaddingMode.PKCS7);
Console.WriteLine("Decrypted text (PKCS7): " + decryptedTextPkcs7);

// 使用ISO10126填充方式解密
string decryptedTextIso10126 = Decrypt(encryptedTextIso10126, key, iv, PaddingMode.ISO10126);
Console.WriteLine("Decrypted text (ISO10126): " + decryptedTextIso10126);

// 使用NoPadding填充方式解密
string decryptedTextNoPadding = Decrypt(encryptedTextNoPadding, key, iv, PaddingMode.NoPadding);
Console.WriteLine("Decrypted text (NoPadding): " + decryptedTextNoPadding);

请注意,加密和解密时使用的密钥(key)和初始化向量(iv)应该是相同的。在实际应用中,请确保妥善保管这些密钥和向量。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/45926.html

相关推荐

  • asp.net ajax有哪些应用场景

    asp.net ajax有哪些应用场景

    ASP.NET AJAX(Asynchronous JavaScript and XML)是一个用于创建交互式Web应用程序的技术集合,它扩展了ASP.NET框架。ASP.NET AJAX的主要应用场景包括: 实时数...

  • asp.net ajax性能怎样优化

    asp.net ajax性能怎样优化

    ASP.NET AJAX(现在称为ASP.NET Core)的性能优化是一个多方面的过程,涉及到代码、配置、服务器资源等多个层面。以下是一些常见的优化策略:
    1. 减少页面加...

  • asp.net ajax安全性如何保障

    asp.net ajax安全性如何保障

    ASP.NET AJAX 提供了多种方法来确保应用程序的安全性。以下是一些建议: 使用 HTTPS:使用 HTTPS 可以确保在客户端和服务器之间传输的数据是加密的,从而防止中间...

  • asp.net ajax数据怎样传递

    asp.net ajax数据怎样传递

    ASP.NET AJAX 数据传递主要通过异步请求(UpdatePanel)和 Web 方法(WebMethod)两种方式实现。下面分别介绍这两种方法的实现过程。 使用 UpdatePanel 进行异步...

  • asp.net aes加密数据如何解密

    asp.net aes加密数据如何解密

    在ASP.NET中,使用AES加密和解密数据需要遵循以下步骤: 引入命名空间: using System.Security.Cryptography;
    using System.Text; 创建一个加密方法: pub...

  • asp.net aes加密安全性如何

    asp.net aes加密安全性如何

    ASP.NET中使用AES加密可以确保数据传输和存储过程的安全性。AES(高级加密标准)是一种广泛认可的对称加密算法,它提供了强大的加密能力和高度的安全性。以下是关...

  • asp.net aes加密算法介绍

    asp.net aes加密算法介绍

    在ASP.NET中,可以使用System.Security.Cryptography命名空间中的Aes类来实现AES加密。以下是关于AES加密算法的介绍:
    AES加密算法的背景
    AES(Advanc...

  • asp.net aes加密如何实现

    asp.net aes加密如何实现

    在ASP.NET中实现AES加密,你可以使用System.Security.Cryptography命名空间中的类。以下是一个简单的示例,展示了如何使用AES加密和解密字符串。
    首先,确保...