/ / c # code pour le cryptage [fermé] - c #, cryptage

code c # pour le cryptage [fermé] - c #, cryptage

Je veux chiffrer les numéros de série du disque dur, de la carte mère, etc., pouvez-vous suggérer de bonnes équations mathématiques pour le chiffrement?

Réponses:

9 pour la réponse № 1

Une règle générale impliquant le cryptage est,si vous ne l'avez pas fait avant, vous allez le faire mal. Si le cryptage est important, utilisez le paquet de quelqu'un d'autre (pour lequel vous avez la source, de préférence, de manière à ce qu'il n'introduise pas de portes dérobées), car il aura éliminé les bogues. Check-out Livre de Schneier sur Crypto pour certaines équations générales et implémentations.

Mais, si vous voulez juste utiliser le cryptage et nonvraiment désagréable de l’implémenter (même s’il s’agit juste de copier le code du livre), alors vérifiez l’espace de noms de cryptage que d’autres ont mentionné.


3 pour la réponse № 2

Espace de noms System.Security.Cryptography
http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx


0 pour la réponse № 3

http://code.google.com/p/zscreen/source/browse/trunk/ZScreenLib/Helpers/PasswordManager.cs a des méthodes pour chiffrer et déchiffrer une chaîne. C'est un début. :)


0 pour la réponse № 4

Cela dépend de ce que vous voulez utiliser. Il y a beaucoup d'algorithmes implémentés dans System.Security.Cryptography espace de noms.

Si vous voulez chiffrer les données et les envoyer à une autre machine et les déchiffrer, votre meilleur choix est le chiffrement asymétrique, par exemple. RSA.

Si vous voulez bien encoder les données et les comparer, mais ne jamais les décoder, le mieux est d’utiliser un hachage, comme SHA-1.

Si vous voulez seulement masquer la chaîne, vous pouvez clairement XOR chaque caractère avec une constante prédéfinie, puis décoder en procédant exactement de la même manière:

private static string key = "MySecretKey";
private static byte[] keyData = Encoding.ASCII.GetBytes(key);

public static byte[] Encrypt(byte[] source)
{
byte[] target = new byte[source.Length];

for (int i = 0; i < target.Length; i++)
target[i] = (byte)(source[i] ^ keyData[i % keyData.Length]);

return target;
}

0 pour la réponse № 5

Comme vous le dites, je vous conseillerais de regarder le framework .NET Espace de noms cryptographique.

Vous devriez utiliser l'un des algorithmes fournis ici plutôt que de chercher à implémenter le vôtre.

Voir aussi cette question précédente Meilleure façon de chiffrer des chaînes courtes dans .NET


0 pour la réponse № 6

le BouncyCastle C # Cette édition pourrait également vous offrir des fonctionnalités intéressantes au-delà de la cryptographie .NET.