Comment mettre en œuvre Triple DES en C# (exemple complet)

Je veux utiliser le triple DES en C# pour le chiffrement/déchiffrement de l' (utf8) les chaînes de caractères avec un (utf8) clé de n'importe quelle longueur.

Je suis à la recherche de ces trois fonctions

public static string Encrypt(string data, string key)
{
    ...
}

public static string Decrypt(string data, string key)
{
    ...
}

public static string GenerateKeyFromString(string str)
{
    ...
}

Remarque: Avant que quelqu'un les liens, les http://www.geekzilla.co.uk/view7B360BD8-A77C-4F1F-BCA0-ACD0F6795F61.htm mise en œuvre ne fonctionne pas, j'ai tout testé.

J'ai fait beaucoup de recherche et a trouvé des morceaux de le problème comme EncryptOneBlock et les autres, mais je suis à la recherche d'un "pour les nuls" mise en œuvre qui, je pense, serait utile pour les autres aussi.

Merci d'avance!

Quel est le problème avec le lien? Est-il juste qu'il ne s'occupe que des clés de 64 bit? Ne prendra pas beaucoup de modification pour corriger cela.
Êtes-vous essayer de mettre en œuvre l'algorithme de vous-même (à des fins d'apprentissage, je l'espère), ou tout simplement comment le faire avec quelque chose comme TripleDESCryptoServiceProvider?
Oui, je l'ai changer mais j'ai trouvé le Decrypt() fonction serait toujours jeter un System.Security.Cryptography.CryptographicException.
Je préfère l'appliquer moi-même, mais serait d'utiliser TripleDESCryptoServiceProvider si recommandé (si il fait gagner du temps).
Si vous avez besoin de chiffrement choses, alors vous devriez (presque) toujours utiliser un préconstruit essayé et testé peu de code pour faire votre crypto pour vous. Une erreur commise par vous dans le codage, il pourrait signifier que vous en fait, n'ont pas de sécurité du tout.

OriginalL'auteur James | 2012-07-10