Stéganographie - cacher une image dans une autre image

Soyez le premier à donner votre avis sur cette source.

Vue 13 118 fois - Téléchargée 1 053 fois

Description

La stéganographie, c quoi ? c l'art de cacher une message dans du texte, une image, etc...

En l'occurence, ici, je cache une image dans une autre image en utilisant le principe de bits de poids forts et de poids faibles... il ne s'agit PAS de l'attachement d'un fichier (aucun interet pour moi).

Seul PB : l'image cryptee doit garder son format .BMP pour etre decryptee sans pb... logique, les pixels doivent garder leur couleur initiale...

Voila :)

Conclusion :


J'ai mis niveau 3 pour pas que les debutants me posent plein de question sur le code...

A savoir que j'utilise 2 modules qui ne sont pas de moi et qui me permettent uniquement de stocker les images dans des tableaux (pour eviter les méthodes trés lentes du style getPixel ou autres...)

DE PLUS :
J'ai constaté une erreur lorsque les deux images ont la meme taille, pour que ca marche (pour l'instant), prenez une image originale plus grande que l'image a cacher...

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

SimonKari
Messages postés
80
Date d'inscription
dimanche 29 décembre 2002
Statut
Membre
Dernière intervention
1 octobre 2004
-
c'est une source prometteuse. je me suis juste permis de remanier toutes ces fonctions de manipulation de bits et décimal. voila ce que je te propose. il me semble que c'est plus efficace et plus simple à maintenir. :

Option Explicit

Public Enum Poids
Faible = 2
Fort = 4
Perso = 8
End Enum

Public Function Bin2Dec(nBinaire As String) As Long
Dim n, a As Long
Dim x As String
Dim Resultat As Long
n = Len(nBinaire) - 1
a = n
Do While n > -1
x = Mid(nBinaire, ((a + 1) - n), 1)
Resultat IIf((x "1"), Resultat + (2 ^ (n)), Resultat)
n = n - 1
Loop
Bin2Dec = Resultat
End Function
Public Function Dec2Bin(ByVal Octets As Long, Optional pOctet As Poids Faible, Optional pLong As Integer 8) As String
Dim LoopCounter As Integer
Dim Resultat As String
Resultat = ""
Do
If (Octets And 2 ^ LoopCounter) = 2 ^ LoopCounter Then
Resultat = "1" & Resultat
Else
Resultat = "0" & Resultat
End If
LoopCounter = LoopCounter + 1
Loop Until 2 ^ LoopCounter > Octets

Resultat = Trim(Resultat)
If Len(Resultat) < pLong Then
Resultat = FillStr(Resultat, "0", pLong)
End If
Select Case pOctet
Case 2 'faible
If Len(Resultat) > 8 Then
Resultat = Mid(Resultat, Len(Resultat) - 8, 8)
End If
Resultat = Mid(Resultat, 5, 4)
Case 4 'fort
If Len(Resultat) > 8 Then
Resultat = Mid(Resultat, Len(Resultat) - 8, 8)
End If
Resultat = Mid(Resultat, 1, 4)
Case 8 'perso
Resultat = Mid(Resultat, (Len(Resultat) - pLong) + 1, pLong)
End Select

Dec2Bin = Resultat

End Function

Public Function FillStr(ByVal Texte As String, Filler As String, Taille As Integer) As String
If Len(Texte) > Taille Then Exit Function
If Len(Filler) > 1 Then
Filler = Mid(Filler, 1, 1)
End If
Do While Len(Texte) < Taille
Texte = Filler & Texte
Loop

FillStr = Texte

End Function

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.