Outre la signature de document, Capicom permet la prise d'empreinte et le cryptage de données

Le hashage
Le hashage permet de créer une empreinte de données. Cette action n'est pas réversible, on ne peut pas partir du Hash pour retrouver le fichier d'origine, par contre un fichier donne un hash unique, caractéristique de ces données. A la façon des empreintes digitales classiques, on ne peut pas connaitre la personne qui à fait cette empreinte, mais une même personne générera toujours la même empreinte et elle lui sera propre.


L'objet capicom utilisé pour hasher est le HashedData

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
	Dim Hash As new HashedData
Capicom permet d'obtenir un hash à partir de plusieurs algorithmes .

choisissez celui qui vous convient
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_MD2
'ou
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_MD4
'ou
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_MD5
'ou
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_SHA1
   'algos non supportés sur 2000/2003/xp
'ou
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_SHA_256
'ou
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_SHA_384
'ou
  Hash.Algorithm = CAPICOM_HASH_ALGORITHM_SHA_512
Les algorithmes MD2 et MD4 sont assez anciens et devraient êtres évités
L'algorithme MD5 a été pris en défaut récemment, des fichiers totalement différents peuvent produire le même hash
Le dernier utilsable partout, reste le préféré (SHA1 ), il génére un string de 40 caractères

Une petite difficulté avec l' objet hash, c'est qu'il n' hashe correctement que des chaines ANSI, or les string VB sont en Unicode
donc on utilisera la fonction strConv(Chaine$, VbFromUnicode)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
 Hash.Hash StrConv(LaChaineAHasher, vbFromUnicode)
Le résultat est obtenu dans la propriété content de l'objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
  HashedData = Hash.Content
Le cryptage

Le cryptage permet de générer une donnée cryptée qui pourra être décryptée si l'on connait la clé secréte qui a servi au cryptage, l'opération est donc réversible.

L'objet Capicom pour faire l'encryptage est le EncryptedData
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
	Dim Crypt As New EncryptedData
Comme pour le Hash, Capicom fournit plusieurs algorithmes de cryptage
choisissez celui qui vous convient
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
  Crypt.Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_3DES  'le plus sûr
'ou
  Crypt.Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_AES
'ou
  Crypt.Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_DES
'ou
  Crypt.Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC2
'ou
  Crypt.Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC4
Ensuite on fournit à l'objet la clé de cryptage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Crypt.SetSecret "Ma Clé de cryptage", CAPICOM_SECRET_PASSWORD
Et les données à crypter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Crypt.Content = "Le texte à chiffrer"
Reste à demander l'encryption
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
  DonneesEncryptees = Crypt.Encrypt(CAPICOM_ENCODE_ANY)    'les données de départ sont d'un format quelconque
'ou
  DonneesEncryptees = Crypt.Encrypt(CAPICOM_ENCODE_BASE64) 'les données de départ sont textuelles 
'ou
  DonneesEncryptees = Crypt.Encrypt(CAPICOM_ENCODE_BINARY) 'les données de départ sont binaires

Voila c'est tout pour le principe d'utilisation de capicom

Le programme exemple fourni avec cet article met en oeuvre les deux objets pour implanter un log sécurisé.
Les données des utilisateurs sont stockées dans une base ACCESS : SecureLog.Mdb

La table User est definie comme suit
- Code user , sur 40 caractères. Ce champs contiendra le Hash du code utilisateur
- Securite, sur 255 caractères. Ce champs contiendra le mot de passe crypté de l'utilisateur
- Droits, Entier Long. Ce champs contiendra un flag définissant les différents droits de l'utilisateur.
Dans cette base de données on ne retrouvera pas les données en clair.

Par ailleurs dans ce programme on trouvera
- Comment créer une base ACCESS par code (DAO)
- Un composant de mon cru permettant de gérer visuellement un flag
Il se présente sous la forme d'un groupe de checkboxes en lignes.
Chaque ligne du groupe à sa propre valeur
- Première ligne = 1
- Deuxième ligne = 2
- Troisième ligne = 4
- Quatrième ligne = 8
- Cinqième ligne = 16
- Etc
Le composant fourni une valeur unique correspondant à la somme des lignes cochées
Exemple : ligne 1 + ligne 3 donne 1 + 4 =5
De même si on fourni une valeur au composant, il se charge de cocher les lignes adéquates

Voila, je reste à votre disposition pour toute explication supplémentaire.


PROJET SecureLog.zip