Comment utiliser le cryptage Rijndael avec un .Net de la classe de Base de la bibliothèque? (Ne pas .Net Framework)

Comment nous utilisons le cryptage Rijndael dans un .Net de la classe de Base de la bibliothèque? (Pas un .Net Framework Bibliothèque de Classe) Nous avons besoin de créer un partagées .Net de bibliothèque de Base pour une utilisation dans de multiples projets, de la mise en œuvre de Chiffrer et de Déchiffrer les méthodes qui utilisent le même cryptage Rijndael à travers les projets.

Nous sommes actuellement en utilisant:

  • VS Enterprise 2015
  • c#
  • .Net De La Classe De Base De La Bibliothèque
  • .NETStandard, Version=v1.6 référence

Il apparaît que la mise en œuvre de Rijndael et AES est absent de la .Net de Base version 1.0...il semble être la seule à inclure les classes de base. Comment pouvons-nous obtenir une .Net, Base de la mise en œuvre de Rijndael de chiffrement AES ou ajouté comme une référence à un nouveau .Net de Base projet de Bibliothèque de classes?

Ici est le cryptage de la méthode qui fonctionne .Net Framework 4.5.2:

    public static string Encrypt(string valueToEncrypt, string symmetricKey, string initializationVector)
    {
        string returnValue = valueToEncrypt;

        var aes = new System.Security.Cryptography.RijndaelManaged();
        try
        {
            aes.Key = ASCIIEncoding.ASCII.GetBytes(symmetricKey);
            aes.IV = ASCIIEncoding.ASCII.GetBytes(initializationVector);
            aes.Mode = CipherMode.CBC;
            aes.Padding = PaddingMode.ISO10126;

            var desEncrypter = aes.CreateEncryptor();
            var buffer = ASCIIEncoding.ASCII.GetBytes(valueToEncrypt);

            returnValue = Convert.ToBase64String(desEncrypter.TransformFinalBlock(buffer, 0, buffer.Length));
        }
        catch (Exception)
        {
            returnValue = string.Empty;
        }

        return returnValue;
    }
Quel est le problème .NET de Base? Est une librairie manquante?
Semble comme il est sur la feuille de route pour la version 1.1: github.com/dotnet/corefx/issues/9984
Corriger Nate, le principal problème semble être que la Rijndael mise en œuvre est absent de la Cryptographie de référence dans la version actuelle d' .Net de Base...juste de la classe de Base abstraite implémentations.
1. ISO10126 a été retirée, PKCS#7 est probablement un meilleur choix et semble en fait pour répondre à la ISO10126 spec. 2. Il est préférable d'utiliser un hasard iv d'autre messages identiques ont la même chiffré octets. Généralement le iv est créé à partir d'un CPRNG et ajouté aux données chiffrées pour une utilisation lors du déchiffrement. 3. À l'aide d'une chaîne que le chiffrement n'est pas particulièrement sécurisé et peut causer de la longueur de la clé de questions. Il est préférable d'utiliser une fonction de dérivation de clé comme PBKFD1. Il y a aussi l'espoir aveugle le mot de passe sera ACIII et pas un autre codage comme l'unicode.

OriginalL'auteur Ensunder | 2016-07-12