Maison > développement back-end > C++ > Comment crypter et déchiffrer les chaînes en C # en utilisant Rijndaelmanaged?

Comment crypter et déchiffrer les chaînes en C # en utilisant Rijndaelmanaged?

Barbara Streisand
Libérer: 2025-02-02 17:01:09
original
356 Les gens l'ont consulté

En C #, utilisez le chiffrement de l'algorithme Rijndaelmanaged et l'explication détaillée de la chaîne impure

How to Encrypt and Decrypt Strings in C# Using RijndaelManaged?

Cet article introduira en détail comment utiliser l'algorithme Rijndaelmanaged en C # pour crypter et décrypter la chaîne.

Le processus de chiffrement

Tout d'abord, vous devez introduire un espace de dénomination

. Le fragment de code suivant montre comment utiliser l'algorithme Rijndaelmanaged plus une chaîne compliquée:

System.Security.Cryptography

Le processus de décryptage
using System.Security.Cryptography;

public class Encryption
{
    // 使用RijndaelManaged算法加密字符串
    public string EncryptString(string plainText, string sharedSecret)
    {
        // 从共享密钥和salt生成密钥
        Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt);

        // 创建RijndaelManaged对象
        RijndaelManaged aesAlg = new RijndaelManaged();
        aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);

        // 创建加密器
        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

        // 创建内存流来保存加密数据
        using (MemoryStream msEncrypt = new MemoryStream())
        {
            // 将IV写入流
            msEncrypt.Write(BitConverter.GetBytes(aesAlg.IV.Length), 0, sizeof(int));
            msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);

            // 加密数据
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(plainText);
                }
            }

            // 将加密数据转换为base64字符串
            return Convert.ToBase64String(msEncrypt.ToArray());
        }
    }
}
Copier après la connexion

La chaîne de décryptage et de chiffrement doit utiliser la même clé partagée que lorsqu'elle est chiffrée. Le fragment de code suivant montre comment utiliser la même chaîne d'algorithme Rijndaelmanaged:

Veuillez noter que <需要> il doit être défini comme un tableau d'octets dans le code pour une sécurité améliorée. Le code complet doit également contenir l'implémentation de la méthode

. Cette méthode Lire le tableau d'octets de
public string DecryptString(string cipherText, string sharedSecret)
{
    // 从共享密钥和salt生成密钥
    Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt);

    // 创建RijndaelManaged对象
    RijndaelManaged aesAlg = new RijndaelManaged();
    aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);

    // 将密文从base64字符串转换
    byte[] bytes = Convert.FromBase64String(cipherText);

    // 创建内存流来保存解密数据
    using (MemoryStream msDecrypt = new MemoryStream(bytes))
    {
        // 从流中获取IV
        aesAlg.IV = ReadByteArray(msDecrypt);

        // 创建解密器
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

        // 解密数据
        using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
        {
            using (StreamReader srDecrypt = new StreamReader(csDecrypt))
            {
                // 从流中读取解密数据
                return srDecrypt.ReadToEnd();
            }
        }
    }
}
Copier après la connexion
. N'oubliez pas que le choix d'une clé de partage solide est essentiel pour la sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal