首页
学习
活动
专区
工具
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)

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

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

相关·内容

领券