首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

兼容C#和javascript的AES加密和解密

AES(Advanced Encryption Standard)是一种对称加密算法,广泛应用于数据加密和保护领域。它支持多种密钥长度(128位、192位和256位),并且被认为是一种高效且安全的加密算法。

AES加密和解密可以通过C#和JavaScript来实现。

在C#中,可以使用System.Security.Cryptography命名空间下的AesManaged类来实现AES加密和解密。以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Security.Cryptography;
using System.Text;

public class AesEncryption
{
    public static string Encrypt(string plainText, string key, string iv)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);
        byte[] ivBytes = Encoding.UTF8.GetBytes(iv);

        using (AesManaged aes = new AesManaged())
        {
            aes.Key = keyBytes;
            aes.IV = ivBytes;

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

            byte[] encryptedBytes = null;

            using (var ms = new System.IO.MemoryStream())
            {
                using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    using (var sw = new System.IO.StreamWriter(cs))
                    {
                        sw.Write(plainText);
                    }

                    encryptedBytes = ms.ToArray();
                }
            }

            return Convert.ToBase64String(encryptedBytes);
        }
    }

    public static string Decrypt(string encryptedText, string key, string iv)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);
        byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
        byte[] encryptedBytes = Convert.FromBase64String(encryptedText);

        using (AesManaged aes = new AesManaged())
        {
            aes.Key = keyBytes;
            aes.IV = ivBytes;

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

            string decryptedText = null;

            using (var ms = new System.IO.MemoryStream(encryptedBytes))
            {
                using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                {
                    using (var sr = new System.IO.StreamReader(cs))
                    {
                        decryptedText = sr.ReadToEnd();
                    }
                }
            }

            return decryptedText;
        }
    }
}

在JavaScript中,可以使用CryptoJS库来实现AES加密和解密。以下是一个示例代码:

代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>

<script>
function encrypt(plainText, key, iv) {
    var keyBytes = CryptoJS.enc.Utf8.parse(key);
    var ivBytes = CryptoJS.enc.Utf8.parse(iv);

    var encrypted = CryptoJS.AES.encrypt(plainText, keyBytes, {
        iv: ivBytes,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });

    return encrypted.toString();
}

function decrypt(encryptedText, key, iv) {
    var keyBytes = CryptoJS.enc.Utf8.parse(key);
    var ivBytes = CryptoJS.enc.Utf8.parse(iv);

    var decrypted = CryptoJS.AES.decrypt(encryptedText, keyBytes, {
        iv: ivBytes,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });

    return decrypted.toString(CryptoJS.enc.Utf8);
}
</script>

以上代码示例中,Encrypt函数用于AES加密,Decrypt函数用于AES解密。需要传入明文、密钥和初始化向量(IV)作为参数。

AES加密和解密的应用场景包括但不限于:

  1. 数据传输安全:通过对敏感数据进行加密,确保数据在传输过程中不被窃取或篡改。
  2. 数据存储安全:对存储在数据库或文件中的敏感数据进行加密,保护数据的机密性。
  3. 身份验证和授权:在用户登录过程中,对用户密码等敏感信息进行加密,确保用户身份的安全性。
  4. 加密通信协议:在网络通信中,使用AES加密算法对通信内容进行加密,防止信息被窃听或篡改。

腾讯云提供了多个与AES加密相关的产品和服务,包括:

  1. 腾讯云密钥管理系统(KMS):用于管理和保护加密密钥的云服务,可用于生成和管理AES加密所需的密钥。详情请参考:腾讯云密钥管理系统(KMS)
  2. 腾讯云数据加密服务(CSE):提供数据加密和解密的云服务,支持AES等加密算法,可用于保护数据的安全性。详情请参考:腾讯云数据加密服务(CSE)

请注意,以上仅为示例代码和腾讯云相关产品的介绍,实际使用时需要根据具体需求和场景进行适配和配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

4分43秒

33_尚硅谷JAVA-公钥加密和私钥解密

6分1秒

JavaScript教程-45-BOM编程window的open和close【动力节点】

24分35秒

JavaScript教程-31-设置和获取文本框的value【动力节点】

18分42秒

JavaScript教程-41-复选框的全选和取消全选【动力节点】

9分48秒

JavaScript教程-41-复选框的全选和取消全选【动力节点】

15分21秒

Web前端 TS教程 07.TypeScript和JavaScript相同的类型 学习猿地

17分32秒

16-JSON和Ajax请求&i18n国际化/08-尚硅谷-AJAX-原生JavaScript的AJAX请求示例

6分24秒

16-JSON和Ajax请求&i18n国际化/03-尚硅谷-JSON-JSON在JavaScript中两种常用的转换方法

9分4秒

APICloud多端开发生鲜电商App开发教程和源码解析

1分15秒

MIKU-不用BitLocker把Windows主机加密!

14分28秒

jQuery教程-01-$是函数名

-

专访a16z马克·安德森:加密技术有望改变世界的运作方式2

领券