Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 12 sept. 2012 à 19:19
Merci pour le partage, je l’utilise en ce moment même, mais comme je souhaite crypter tout une classe sérialisé, je suis obligé de créer le fichier de base, le crypter puis de supprimer l'ancien ficher de base (idem à la lecture) Vois tu mieux à faire ? cdlt et encore merci, simple et efficace.
blq
Messages postés97Date d'inscriptionvendredi 22 octobre 1999StatutMembreDernière intervention13 juin 20161 10 juin 2012 à 19:34
Excellent code. Fonctionne très bien avec VB 2010 Express. Merci pour cette contribution.
nanar314
Messages postés2Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention 5 mai 20121 5 mai 2012 à 23:59
Code fonctionnel, bien commenté, facilement intégrable à un projet.
Merci. Dès que mon petit Freeware, intégrant la class ElgAESCrypt, sera terminé, je l'enverrai à l'auteur
NB : Cette Class n'est compatible que pour FrameWorks 3.5 ou +
cs_lilj
Messages postés203Date d'inscriptiondimanche 13 décembre 2009StatutMembreDernière intervention 1 avril 20125 10 févr. 2011 à 09:25
Code très utile merci, cependant, j'ai un petit soucis. Voilà, ce que je fais :
Dim crypt As New ElgAESCrypt("Clé")
dim machaine as string
machaine = crypt.EncrypterChaine("machaine1")
jusque là pas de soucis. mais le décryptage :
dim machainedecrypt as string = crypt.DécrypterChaine(machaine)
msgbox(machainedecrypt & "je teste") =>> Affiche "machaine1" (il est où le "je teste" ???)
ou encore
dim mavar as stringmavar "Mon truc " & machainedecrypt & "; cool">> Affiche "Mon truc machaine1 ; cool"
Pourquoi il y a un si grand espace alors que normalement :
dim unechaine as string = "test"mavar "Mon truc " & unechaine & "; cool">> Affiche "Mon truc test; cool"
j'espère avoir était clair..
Comment résoudre cela ? car une chose est sûr après des tests que cela vient du fait :
dim machainedecrypt as string = crypt.DécrypterChaine(machaine)
cs_Sly83
Messages postés1Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention17 décembre 2010 17 déc. 2010 à 09:30
Bonjour,
il me semble que le problème provient du fait que la clé utilisée pour le décryptage ne soit pas la même qui a servi au cryptage du fichier.
GrandByblos
Messages postés2Date d'inscriptionmercredi 27 décembre 2000StatutMembreDernière intervention18 novembre 2010 18 nov. 2010 à 10:27
Bonjour.
Votre code est ma foi très bon, et bien commenté qui plus est, ça fait plaisir.
Ceci étant dit, je me trouve face à un problème que j'ai du mal à résoudre : en voulant décrypter (fonction DecrypterChaine) une chaîne cryptée (of course) je me heurte à une exception lors de
"Le remplissage n'est pas valide et ne peut pas être supprimé"
J'ai beau chercher, je ne trouve pas ce qui peut gérer ça !
Auriez-vous une idée ?
kimooch
Messages postés1Date d'inscriptionlundi 4 mai 2009StatutMembreDernière intervention17 mai 2010 17 mai 2010 à 16:37
SALUT
si jveut introduire la clé ,que doit je faire puisque je génére les clé a partir d'une courbe élliptique
foobar470
Messages postés7Date d'inscriptionjeudi 21 août 2008StatutMembreDernière intervention17 janvier 2009 17 janv. 2009 à 22:35
Bon code, commenté et qui fonctionne.
Bravo.
Redman31100
Messages postés167Date d'inscriptionmardi 11 septembre 2007StatutMembreDernière intervention11 février 2009 18 nov. 2008 à 10:55
J'ai un souci avec ton code, je l'ai modifié :
Public Function EncrypterChaine(ByVal Chaine As String) As String
Dim AES As New Security.Cryptography.AesCryptoServiceProvider()
AES.GenerateIV()
If AES.ValidKeySize(FormatKey("Redman", AES.KeySize).Length) Then
AES.Key = System.Text.Encoding.UTF8.GetBytes(FormatKey("Redman", AES.KeySize))
Else
MsgBox("Taille de Clé invalide !", MsgBoxStyle.Exclamation)
End If
Dim AesCrypt As Security.Cryptography.ICryptoTransform = AES.CreateEncryptor()
Dim bufferEntree() As Byte
Dim Resultat As String = ""
' Convertie la chaine et la place dans le buffer d'entree
Dim ConvertArray As New System.Text.ASCIIEncoding()
bufferEntree = ConvertArray.GetBytes(Chaine)
' Crée flux pour la sortie
Using msOutput As New IO.MemoryStream()
Using cryptostream As New Security.Cryptography.CryptoStream(msOutput, AesCrypt, Security.Cryptography.CryptoStreamMode.Write)
Public Function FormatKey(ByVal Key As String, ByVal KeySize As Integer) As String
If Key.Length < KeySize Then
Key = Key.PadRight(KeySize)
End If
If Key.Length > KeySize Then
Key = Key.Substring(0, KeySize)
End If
Return Key
End Function
Lorsque je met une longueur de clé valide donc 256 caractères que j'ai même vérifier la longueur en débugguant. Ca me lève une System.Security.Cryptography.CryptographicException "La clé spécifiée n'est pas d'une taille valide pour cet algorithme." quand au VI je fais
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 17 nov. 2008 à 22:02
Désolé pour le temps de réponse, je n'avais pas vu qu'on m'avait ecrit ...
Pour le MemoryStream voici une méthode, à ajouter dans le module "ElgCrypt" :
---
''' <summary>
''' Encrypte une chaine de texte
''' </summary>
''' Chaine en claire
''' <returns>Chaine cryptée</returns>
''' Elguevel
Public Function EncrypterChaine(ByVal Chaine As String) As String
Dim AES As New AesCryptoServiceProvider()
Dim AesCrypt As ICryptoTransform = AES.CreateEncryptor(_SecretKey, _SecretIV)
Dim bufferEntree() As Byte
Dim Resultat As String = ""
' Convertie la chaine et la place dans le buffer d'entree
Dim ConvertArray As New System.Text.ASCIIEncoding()
bufferEntree = ConvertArray.GetBytes(Chaine)
' Crée flux pour la sortie
Using msOutput As New MemoryStream()
Using cryptostream As New CryptoStream(msOutput, AesCrypt, CryptoStreamMode.Write)
12 sept. 2012 à 19:19
10 juin 2012 à 19:34
5 mai 2012 à 23:59
Merci. Dès que mon petit Freeware, intégrant la class ElgAESCrypt, sera terminé, je l'enverrai à l'auteur
NB : Cette Class n'est compatible que pour FrameWorks 3.5 ou +
10 févr. 2011 à 09:25
Dim crypt As New ElgAESCrypt("Clé")
dim machaine as string
machaine = crypt.EncrypterChaine("machaine1")
jusque là pas de soucis. mais le décryptage :
dim machainedecrypt as string = crypt.DécrypterChaine(machaine)
msgbox(machainedecrypt & "je teste") =>> Affiche "machaine1" (il est où le "je teste" ???)
ou encore
dim mavar as stringmavar "Mon truc " & machainedecrypt & "; cool">> Affiche "Mon truc machaine1 ; cool"
Pourquoi il y a un si grand espace alors que normalement :
dim unechaine as string = "test"mavar "Mon truc " & unechaine & "; cool">> Affiche "Mon truc test; cool"
j'espère avoir était clair..
Comment résoudre cela ? car une chose est sûr après des tests que cela vient du fait :
dim machainedecrypt as string = crypt.DécrypterChaine(machaine)
17 déc. 2010 à 09:30
il me semble que le problème provient du fait que la clé utilisée pour le décryptage ne soit pas la même qui a servi au cryptage du fichier.
18 nov. 2010 à 10:27
Votre code est ma foi très bon, et bien commenté qui plus est, ça fait plaisir.
Ceci étant dit, je me trouve face à un problème que j'ai du mal à résoudre : en voulant décrypter (fonction DecrypterChaine) une chaîne cryptée (of course) je me heurte à une exception lors de
cryptostream.Read(BufferSortie, 0, BufferSortie.Length)
L'exception levée est :
"Le remplissage n'est pas valide et ne peut pas être supprimé"
J'ai beau chercher, je ne trouve pas ce qui peut gérer ça !
Auriez-vous une idée ?
17 mai 2010 à 16:37
si jveut introduire la clé ,que doit je faire puisque je génére les clé a partir d'une courbe élliptique
17 janv. 2009 à 22:35
Bravo.
18 nov. 2008 à 10:55
Public Function EncrypterChaine(ByVal Chaine As String) As String
Dim AES As New Security.Cryptography.AesCryptoServiceProvider()
AES.GenerateIV()
If AES.ValidKeySize(FormatKey("Redman", AES.KeySize).Length) Then
AES.Key = System.Text.Encoding.UTF8.GetBytes(FormatKey("Redman", AES.KeySize))
Else
MsgBox("Taille de Clé invalide !", MsgBoxStyle.Exclamation)
End If
Dim AesCrypt As Security.Cryptography.ICryptoTransform = AES.CreateEncryptor()
Dim bufferEntree() As Byte
Dim Resultat As String = ""
' Convertie la chaine et la place dans le buffer d'entree
Dim ConvertArray As New System.Text.ASCIIEncoding()
bufferEntree = ConvertArray.GetBytes(Chaine)
' Crée flux pour la sortie
Using msOutput As New IO.MemoryStream()
Using cryptostream As New Security.Cryptography.CryptoStream(msOutput, AesCrypt, Security.Cryptography.CryptoStreamMode.Write)
cryptostream.Write(bufferEntree, 0, bufferEntree.Length)
cryptostream.FlushFinalBlock()
Dim bufferSortie(msOutput.Length) As Byte
msOutput.Position = 0
msOutput.Read(bufferSortie, 0, msOutput.Length)
Resultat = Convert.ToBase64String(bufferSortie)
End Using
End Using
Return Resultat
End Function
Public Function FormatKey(ByVal Key As String, ByVal KeySize As Integer) As String
If Key.Length < KeySize Then
Key = Key.PadRight(KeySize)
End If
If Key.Length > KeySize Then
Key = Key.Substring(0, KeySize)
End If
Return Key
End Function
Lorsque je met une longueur de clé valide donc 256 caractères que j'ai même vérifier la longueur en débugguant. Ca me lève une System.Security.Cryptography.CryptographicException "La clé spécifiée n'est pas d'une taille valide pour cet algorithme." quand au VI je fais
17 nov. 2008 à 22:02
Pour le MemoryStream voici une méthode, à ajouter dans le module "ElgCrypt" :
---
''' <summary>
''' Encrypte une chaine de texte
''' </summary>
''' Chaine en claire
''' <returns>Chaine cryptée</returns>
''' Elguevel
Public Function EncrypterChaine(ByVal Chaine As String) As String
Dim AES As New AesCryptoServiceProvider()
Dim AesCrypt As ICryptoTransform = AES.CreateEncryptor(_SecretKey, _SecretIV)
Dim bufferEntree() As Byte
Dim Resultat As String = ""
' Convertie la chaine et la place dans le buffer d'entree
Dim ConvertArray As New System.Text.ASCIIEncoding()
bufferEntree = ConvertArray.GetBytes(Chaine)
' Crée flux pour la sortie
Using msOutput As New MemoryStream()
Using cryptostream As New CryptoStream(msOutput, AesCrypt, CryptoStreamMode.Write)
cryptostream.Write(bufferEntree, 0, bufferEntree.Length)
cryptostream.FlushFinalBlock()
Dim bufferSortie(msOutput.Length) As Byte
msOutput.Position = 0
msOutput.Read(bufferSortie, 0, msOutput.Length)
Resultat = Convert.ToBase64String(bufferSortie)
End Using
End Using
Return Resultat
End Function
----
Bon code ...
10 nov. 2008 à 09:03