begin process at 2010 02 10 04:41:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

Cryptage et problème de conversion de Byte[]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Cryptage et problème de conversion de Byte[]

lundi 21 août 2006 à 18:53:22 | Cryptage et problème de conversion de Byte[]

deve007

Bonjour ,


jai un  string que je doit obligatoirement convertir en tableau de Byte, cette conversion se passe mal
voici l'exemple :

jai un string :

monstring = abcdefghijkl  [12]

je le converti en Byte[] :

private byte[] monTabByte ;

monTabByte = StrToByteArray(monstring);

je déclare une variable appartenant à l'API de cryptography SymmetricAlgorithm()

private SymmetricAlgorithm mCSP = SymmetricAlgorithm.Create() ;

je doit affecter monTabByte à une variable propriétaire à la cryptography (qui représente le Vecteur d'initialisation) et qui est de type Byte []: mCSP.IV

le problème c'est que quand je trace, je trouve que la variable mCSP.IV par défaut contient un tableau de 16 élement et monTabByte ne contient que 12 !!! je sais pas coment faire face à cela, sachant que j'ai essayer de d'ajouter des bits pour atteindre les 16, mais cela me cause probleme au niveau du décryptage !


toute proposition sera la bienvenue.

lundi 21 août 2006 à 19:30:58 | Re : Cryptage et problème de conversion de Byte[]

Lutinore

Administrateur CodeS-SourceS
Salut, j'ai pas tout compris..

Tu es obligé de passer un tableau de 16 bytes !??

Faut voir comment marche la fonction StrToByteArray, n'oublie pas que les chars en .NET sont sur 2 octets.
lundi 21 août 2006 à 19:38:20 | Re : Cryptage et problème de conversion de Byte[]

Overkill06

La solution la plus propre pour convertir un string en tableau de byte est de passer par System.Text.
Apres il suffit de choisir l'encodage : unicode, utf8 etc...
Par exemple pour unicode tu crées un objet System.Text.UnicodeEncoding et tu appeles GetBytes

Informations :
public override int GetBytes(string s, int charIndex, int charCount, byte[ ] bytes, int byteIndex)
    Membre de System.Text.UnicodeEncoding

Résumé :
Code un jeu de caractères de la chaîne System.String spécifiée dans le tableau d'octets indiqué.

Paramètres :
s: System.String contenant le jeu de caractères à coder.
charCount: Nombre de caractères à coder.
byteIndex: Index auquel commencer l'écriture de la séquence d'octets obtenue.
charIndex: Index du premier caractère à coder.
bytes: Tableau d'octets contenant la séquence d'octets obtenue.

Valeurs de retour :
Nombre réel d'octets écrits dans bytes.

Ca marche pour utf également, regarde msdn ou Explorateur d'objets fournis dans visual studio.
lundi 21 août 2006 à 20:42:22 | Re : Cryptage et problème de conversion de Byte[]

deve007

je repond a Lutinore deja :

je vous donne une idée plus golbale sur mon sujet:


j'ai un Client et un Serveur je doit, la communication entre ces 2 entités ne doit pas passé en claire ! j'ai cherché aupres de la bibliothèque SSLStream en C#, mais il parait que c'est trop compliqué, donc, jai essayer de faire simple en cryptant les données avant de les envoyées. cette operation se fait via une variable mCSP de la bibliothèque [SymmetricAlgorithm ]  en fournissant une clé de cryptage ainsi qu'un vecteur d'initialisation qui a comme role d'eviter d'avoir le meme mot, le meme code crypté.

cette clé é ce vecteur dinitialisation doivent etre les meme du coté du client et du serveur chose qui permettra a ce dernier de decrypté les elements envoyées.

c'est a ce niveau ou j'ai un probleme puisque une fois ces 2 message recu par le serveur il narrive pas a stocker le 2eme ( Vecteur d'initialisation) dans un Byte[] vu qu'il n'est pas sur 2 Octets.jespere que c'est plus claire que tout a lheure.


voici le corps de la fonction  StrToByteArray: ( je pense que ca répond meme a Overkill06)

public static byte[] StrToByteArray(string str)

{

System.Text. ASCIIEncoding encoding = new System.Text.ASCIIEncoding ();

return encoding.GetBytes(str);

}

qu'est ce que vous en pensez les gas ?

mardi 22 août 2006 à 11:11:42 | Re : Cryptage et problème de conversion de Byte[]

Lutinore

Administrateur CodeS-SourceS
Essayes avec une chaine de 8 caractères encodés en en unicode soit 16 bytes.
mercredi 23 août 2006 à 17:31:39 | Re : Cryptage et problème de conversion de Byte[]

deve007

salut,

le problème que je n'arrive tjrs pas à comprendre est le suivant :

j'ai 2 fonctions l'une crypte, la seconde decrypte.

si je met ces 2 fonctions dans le meme programme et jexecute, tout est nikel, PAR CONTRE, si je prend celle qui crypte, je l'affecte soigneusement au client ( vue que c'est lui qui va envoyer les données) puis j'intègre celle qui decrypte au niveau du serveur, ca pete !!!!!  , je comprend plus rien....


et ca plante au niveau du vecteur dinitialisation :

une fois je crée un vecteur dinitialisation , je lenvoie au serveur histoire d'avoir le meme que le client qui lui permettra de décrypter la chaine que jenverrai apres! une fois recu, je le convertie a un tableau de Byte, puis je le stocke au niveau d'une variable spécifique cet effet mCSP.IV ( Initialisation Vector) qui sera utilisée par le CreateDecryptor(mCSP.Key,mCSP.IV);

et la il commence a me raconté des nulletés genre : la taille du tableau n'est pas adequate ou tableau ne doit pas etre vide sachant que quand je trace, je trouve qu'il est plein... maintenant j'ai reussit a dépassé cela mais ca plante au niveau d'une fonction
FlushFinalBlock() !!


je vous met ci dessous ma fonction qui s'occupe de decrypter la chaine envoyée par le client peut etre que ca pourrais aider à comprendre mieux mon problème :



//instanciation de SymmetricAlgorithm au début du programme serveur :


private
SymmetricAlgorithm mCSP = SymmetricAlgorithm.Create() ;

// fonction de décryptage


private
string DecryptString(string Value)

{

ICryptoTransform ct;

MemoryStream ms;

CryptoStream cs;

byte[] byt;

// le vecteur d'initialisation envoyer par le client, ici mis dans une variable pour faciliter la compréhension

String
m_initVector = "@1B2c3D4e5F6g7H8";

// conversion du vecteur d'initialisation a un tableau de Byte

Byte
[] IVArray = StrToByteArray(m_initVector);

// affectation du tableau de Byte a la variable .IV qui sera utiliser par la fonction createDecryptor:
mCSP.IV = IVArray;

// de meme pour la clé de cryptage

String
m_key = "g0VjERYkOzgb5p7YGKrOH778DvfEMyqj";

Byte[] KeyArray = StrToByteArray(m_key);

mCSP.Key = KeyArray;

// ici on crée un decrypteur avec les 2 elements : clé de cryptage et vecteur dinitialisation

ct = mCSP.CreateDecryptor(mCSP.Key,mCSP.IV);

byt = Convert.FromBase64String(Value);

// allocation d'un buffer

ms =
newMemoryStream();

cs = newCryptoStream(ms, ct, CryptoStreamMode.Write);

cs.Write(byt, 0, byt.Length);

// a ce niveau ca plante !!!!

cs.FlushFinalBlock();

cs.Close();

returnEncoding.UTF8.GetString(ms.ToArray());

}



est ce que quelqu'un a une bonne idée ?
mercredi 23 août 2006 à 17:59:15 | Re : Cryptage et problème de conversion de Byte[]

Nikoui

Ca ne pourrais pas être a cause du "pointeur de lecture", qui ne serait pas forcément bien positionné sur le flux (par exemple s'assurer qu'il est au début avant de lire...) ?
vendredi 25 août 2006 à 08:19:30 | Re : Cryptage et problème de conversion de Byte[]

deve007

non je pense pas, car avant de faire se genre de communication en crypté , je lai deja effectuer en claire, et donc le pointeur de lecture marche bien puisque je lit ce que jenvoie, par contre une fois je passe au mode crypté.. les problemes commencent!!

jai même essayer de telecharger des codes sources de cryptage/ decryptage de string, et c'est la meme histoire: si c'est ds le meme programme que ca se produit, c'est bon, mais une fois on les dispatchent sur 2 programmes... ca foire !!


vendredi 25 août 2006 à 10:02:41 | Re : Cryptage et problème de conversion de Byte[]

Nikoui

En relisant ce que tu as écris dans le message au dessus (avec le code), je me demande si ce n'est pas la facon dont tu transmet les info entre tes deux programmes qui pose problème...

Comment transmet tu les infos? (ce sont deux assemblies chargée ensemble et tu appelle les méthodes de l'une et de l'autre, ou ce sont deux programmes distinct, avec transmission par réseau, etc... ?)


Cette discussion est classée dans : problème, variable, conversion, byte, montabbyte


Répondre à ce message

Sujets en rapport avec ce message

conversion string en int, byte, hexa [ par vinc524 ] C#bonjour, je cherche désespérémment un moyen pour convertir une chaine de caractere string en hexadecimal. En fait je voudrais le code ascii d'un car conversion de text en byte [ par lesboulangeriessontferméeslelundi ] BonjourQuelqu'un sait y comment skon pourrait faire pour transformer le texte d'une text box en byte ... ça commence à m'én... (pour rester poli) bien lire un fichier binaire [ par ultrafil ] Salut, j'ai besoin de lire des données dans un fichier binaire.Mon problème c'est que je n'arrive pas à faire de conversion en byte[]Je m'explique, j' Conversion de string en byte [ par moihenry ] Voila mon problème j'ai besoin de cette commande ="ÿÿÿÿgetstatus"mais quand je fais :byte[] byt = new byte[1024];byt = System.Text.Encoding.ASCII.GetB Conversion d'un int en byte[4] [ par RyoSaeba2 ] 'lut,je m'adresse à cette grande communauté de programmeurs et vous pose une question :Comment convertir un int en un tableau de 4 bytes (c#)?Merci po Problème de conversion UTF7 [ par billou_13 ] Bonjour,J'ai un petit problème, j'ai un fichier que j'ai éditer avec le StreamWriter StreamWriter SW = new StreamWriter(_File,System.Text.Encoding.UTF [C#] [.NET] Conversion d'un Byte en Hexadecimal [ par akaii ] Bonjour, Tout est dans le titre je dois convertir une chaine de caractère en Byte puis en Hexadecimal j'ai actuellement un tableau de Byte[] contenan traduction de VB :( [ par woot6768 ] Bonjour, Voila j'ai un petit problème de traduction avec VB.Il faut que je traduise la variable suivante : "Public correspondance(52,2) As String"Pour Mettre un tableau de byte dans un System.IntPtr [ par djoao ] Salut à tous,D'après ce que j'ai compris le "System.IntPtr" est un pointeur.J'aimerais faire pointer ma variable de type System.IntPtr vers une autre Problème de variable [ par m0rph3us002 ] Salut salutvoilà j'ai un petit souchi dans un de mes prog : c'est un prog qui est composé de trois feuilles et dans l'une d'elle il y a un compteur qu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales