Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[.NET2] SECURESTRING, STRING CRYPTÉE EN MÉMOIRE


Information sur la source

Catégorie :Sécurité Source .NET ( DotNet ) Classé sous : sécurité, securestring, string, cryptée, cryptage Niveau : Initié Date de création : 19/04/2006 Vu / téléchargé: 5 097 / 262

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Ce code est juste là pour un but pédagogique (c'est le but de Codes-Sources je croi :p)
donc ya pas de capture (ni d'exe) car le code ne fait rien d'extraordinaire c'est juste un boite de dialogue de connection

Sauf que dans une boite de dialogue ordinaire lorsque l'on tappe le mot de passe, dans le meilleur des cas on met une "*" dans le PasswordChar de la textbox et puis basta !!! alors qu'il est très facile de faire disparaitre cette * et voir le mot de passe en clair

mon code analyse chaque frappe de clavier sur la textbox de mot de passe et stock le caractère (à la suite des autres) dans une variable en memoire et renvoie dans la textbox une * (avec le PasswordChar="") comme ca plus moyen de lire le mot de passe... direct dans la textbox car meme en faisant msgbox(txtMotdePasse.text), bah on verra que des etoiles !!!

Jusque là source nulle, qui sert à rien, y'en a des milliers sur CS, ..., etc
et bien non !!! une source comme celle y'en a ... 0 sur VBFrance (et meme 0 sur tout CS tous languages confondus)

Et que c'est là que le .Net framework 2 intervient !!! avec sa securité et avec une classe que personne (ou presque) ne connait !
au lieu mettre betement les caractères les uns à la suite des autres dans une simple "String" (qui est lisible en memoire directement en clair) et bah on va crypter cette chaine de caractère, qui ça ?? nous ?? non, le framework !!!
A l'aide d'une SecureString, qui est une string presque normal sauf qu'elle est cryptée en memoire automatiquement (pas besoin de clé de cryptage et tous le tralala, le framework s'occupe de tous)

Le seul (peut etre) inconvenient c'est que l'on ne peut pas faire :
Dim mSecureStr as SecureString
mSecureStr = TextBox1.Text

Non, il faut entrer les caractères 1 par 1...

Le code est très commenté pour bien tous expliquer

voila !!! (commentaire + notes...)

VBSorcier

PS : voir notes finales

 

Source

  • 'LE CODE DANS LES GRANDES LIGNES, LE PRINCIPALE
  • Imports System.Security 'pour pouvoir déclarer la SecureString
  • Imports System.Runtime.InteropServices 'Pour pouvoir aller chercher le pointeur en memoire
  • Private mPwd As New SecureString 'déclarée en tant que "String Sécurisé"
  • 'Ecriture dans la SecureString, insére 1par1 chaque caractère du texte et crypte au fur et à mesure
  • For Each mChar As Char In "Source de VBSorcier"
  • mPwd.AppendChar(mChar)
  • Next
  • 'Lecture de la valeur de la SecureString
  • Dim mPointeur As IntPtr = Marshal.SecureStringToBSTR(mPwd) 'Pour aller chercher le pointeur renvoyant vers la securestring
  • lbSecureString.Text = Marshal.PtrToStringUni(mPointeur) 'Va chercher la valeur de la securestring
'LE CODE DANS LES GRANDES LIGNES, LE PRINCIPALE

Imports System.Security                 'pour pouvoir déclarer la SecureString
Imports System.Runtime.InteropServices  'Pour pouvoir aller chercher le pointeur en memoire


    Private mPwd As New SecureString    'déclarée en tant que "String Sécurisé"


'Ecriture dans la SecureString, insére 1par1 chaque caractère du texte et crypte au fur et à mesure
    For Each mChar As Char In "Source de VBSorcier"
       mPwd.AppendChar(mChar)
    Next


'Lecture de la valeur de la SecureString
    Dim mPointeur As IntPtr = Marshal.SecureStringToBSTR(mPwd)      'Pour aller chercher le pointeur renvoyant vers la securestring
    lbSecureString.Text = Marshal.PtrToStringUni(mPointeur)         'Va chercher la valeur de la securestring

Conclusion

Code dans les grandes lignes...

Le zip est plus complet car il montre comment bien gérer toute les frappes dans une textbox pour bien modifier la SecureString en conséquence (en prennant compte de la touche "BackSpace" et "Suppr")


Voila, c'est fini !!!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Nix le 19/04/2006 14:59:22 administrateur CS

T'es un peu sévère là quand même
"source nulle, qui sert à rien, y'en a des milliers sur CS" :p

Sinon, c'est une bonne idée de montrer cette nouvelle fonctionnalité de .NET 2

signaler à un administrateur
Commentaire de VBSorcier le 19/04/2006 15:45:13

quand je disais "source nulle, qui sert à rien, y'en a des milliers sur CS", je pensais aux enventuels commentaires qu'aurai pu faire d'autres developpeurs en voyant les 1er abords de ma source (genre une n-ieme fenetre de connexion...)

Je disais nullement que les sources dans les memes genres sont nulles

Si je peut je ferai d'autres sources pour montrer les nouvelles fonctionnalité peu connus de .net2

a+
VBSorcier

signaler à un administrateur
Commentaire de Nix le 19/04/2006 17:16:45 administrateur CS

Avec plaisir ;)
Surtout que cette nouvelle feature est vraiment utile et pas encore bien connue

signaler à un administrateur
Commentaire de Pym Corp le 19/04/2006 17:29:12

Cool je connaissais pas merci VBSorcier :)

signaler à un administrateur
Commentaire de Willi le 20/04/2006 16:01:45 administrateur CS

Pour compléter ta source, utilise la méthode MakeReadOnly pour interdire toutes modifications accidentels ou malveillantes.

Bonne continuation.

signaler à un administrateur
Commentaire de VBSorcier le 20/04/2006 20:17:27

Oué c'est vrai j'aurais pus le mettre, mais là, c'était surtout pour bien montrer comment la modifier (inserer/supprimer un caractère là ou l'on veux, lecture), surtout que dans ce code le texte (mot de passe) est ammené à etre modifié plus que dans un autre car en je pense que le plus souvent le code rencontré sera :

    Dim MySecureStr as SecureString
    For Each mChar as Char In "Mon Texte à sécuriser"
       MySecureStr.AppendChar(mChar)
    Next
donc pas besoin de InsertAt et RemoveAt

Merci à toi de l'avoir rajouté pour ceux qui voudrais compléter le code :p

a+
VBSorcier

signaler à un administrateur
Commentaire de supremeadada le 28/04/2006 11:13:33

Quand on cherche une fonctionnalité, on met souvent beaucoup de temps pour trouver les syntaxes.
Microsoft devrait t'embaucher pour rédiger des exemples dans leur doc qui en manque cruellement. Si j'avais trouvé ce soft dans la doc j'aurais gagné beaucoup de temps.
La remarque de Willi est juste.
Merci

signaler à un administrateur
Commentaire de VBSorcier le 28/04/2006 18:06:32

c'est clair que les fonctionnalitées telle que celle là, on ne les trouvent pas un matin en se reveillant et disant "cette nuit j'ai révé du type Securestring de la classe Security du .net framework 2 à quoi sert donc ce truc, tiens j'vai faire une source pour CS" !!!

j'avais entendu parler de "securestring" lors des DevDays2005 (auxquels je n'ai pu assister => donc je me suis fait tous les webcasts Microsoft des DevDays2005 (environ 10h de video))... et c'est là qu'ils introduisaient tout les nouvelles fonctionalité de .net2 et SQL Server 2005 (y'avait aussi les e-demos)


voila

PS : ca me generai pas que MS m'appel :p

signaler à un administrateur
Commentaire de VBSorcier le 06/05/2006 11:35:10

bon alors dans la serie, fonction inconnue de .net 2 je propose aujourd'hui :
les certificats

pour ceux que ca intérresse :

http://www.vbfrance.com/code.aspx?ID=37468

et puis la meme mais en C#
   http://www.csharpfr.com/code.aspx?ID=37466

a+
VBSorcier

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Cryptage et nombre aléatoire [ par lebarn ] Lors d'un cryptage avec un nombre aléatoire dans un algorythme, on est forcé de stocker ce nombre aléatoire dans la chaine cryptée à la fin, donc ça a Problème Cryptage Vigénère [ par Redman31100 ] Bonjour à tous !J'ai commencé à faire seulement le code de cryptage Vigénère.Voici le code : Public Shared Function Cryptage(ByVal TextClair As String Largeur cm string vba word [ par sisi231 ] Bonjour !Dans une macro Word je voudrait redimensionner les largeurs des colonnes d'un tableau créé par ma macrode la largeur de leur titre c'est-à-di cryptage [ par achills ] svp j'ai une autre question: je crypte mes données (text1.text) puis je les enregistre dans un fichier text et je les charge au démarrage du forum,le Parcourir Fichier et renvoyer résultat obtenu via des Regex dans un dataset [ par ranouf ] Bonjour,J ai du mal a concevoir une solution qui de base me paraissait pourtant simple, je vous explique mon pb.Je dois parcourir tout un fichier .asp definir un Array comme parametre dans une sub [ par ravachol ] bonjour,je voudrais faire ça :Public Sub SVG(Image_fond As String, chemVid2(12) As String, ByVal nbbouton As Integer, ByVal nbobjet As Integer)mais il cryptage application (vb6 utilisant liste et fichier texte [ par bayrem2 ] salut,je suis debutant en informatique , je une application vb que je la termine, je suis demandé de la crypte , mais je sais pas que çc veut dire cry Inputbox [ par Djrome ] Salut les Kracks,Je bute sur la boucle d'une inputbox qui se réaffiche si l'utilisateur clique sur annulé : Dim vDate As String    Do    vDate = Input Problème avec Split() [ par Redman31100 ] Alors Voici mon code :Dim text1 As String = "a|b"Dim text2 As String = "a<>b"Dim splittedtexts1() As String = text1.Split("|")Dim splittedtexts2 Envoyer un mail avec VB6 [ par piou62 ] BonjourVoila je voudrais via VB6 envoyer un mail à plusieurs personnes dont la liste sera dans un tableau dynamique.J'ai trouvé comme code :Declare Fu


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,983 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.