Question

Pour interagir avec un flux de données externe, je dois transmettre une clé de sécurité continue qui a été hachée MD5 (chaque jour, nous devons générer une nouvelle clé hachée MD5).

Je me demande si nous devons le faire ou non à chaque fois que nous appelons le flux externe. J'ai besoin d'une chaîne d'environ 10 caractères pour le flux.

Il s’agit d’un site ASP.NET (C # / .NET 3.5) et le flux est utilisé à peu près sur toutes les pages. Est-ce que je ferais mieux de générer le hachage une fois par jour, puis de le stocker dans le cache de l'application, puis de récupérer le succès de la mémoire ou de le générer à chaque demande?

Était-ce utile?

La solution

Les données constituent la seule base acceptable pour les optimisations. Mesure générant cet en-ligne et mesure le cache.

Mon poste de travail haut de gamme peut calculer plus de 100 000 hachages MD5 d'un segment de données de 10 octets en une seconde. Il n'y aurait aucun avantage à mettre cela en cache pour moi et je parie que c'est la même chose pour vous.

Autres conseils

Générez des exemples de données. Eh bien, beaucoup. Calcule le MD5 des exemples de données. Mesurer le temps qu'il faut. Décidez vous-même.

Si ce sera la même chose pour un jour donné, cela pourrait être une idée. Vous pouvez même définir le cache sur 24 heures et écrire du code pour régénérer le hachage lorsque le cache expire

Calculez la complexité temporelle de l'algorithme!

Regardez le code suivant:

   public string GetMD5Hash(string input)
    {
        System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
        bs = x.ComputeHash(bs);
        System.Text.StringBuilder s = new System.Text.StringBuilder();
        foreach (byte b in bs)
        {
            s.Append(b.ToString("x2").ToLower());
        }
        string password = s.ToString();
        return password;
    }

Si nous devions calculer la complexité temporelle, nous aurions T = 11 + n * 2, mais il ne s'agit que de "ce que nous voyons". c'est-à-dire que ToLower pourrait faire un travail lourd que nous ne connaissons pas. Mais à partir de ce point, nous pouvons voir que cet algorithme est O (n) dans tous les cas. Cela signifie que le temps augmente à mesure que les données grandissent.

Pour répondre également au problème de la mémoire cache, je préférerais que mon "lourd" " travailler en mémoire car la mémoire est moins chère que l'utilisation du processeur.

Utiliser le cache Asp.Net est très simple, je ne vois donc pas pourquoi vous ne devriez pas mettre la clé en cache.

Le stockage de la clé dans le cache peut même économiser de la mémoire car vous pouvez la réutiliser au lieu d'en créer une nouvelle pour chaque demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top