Securevault : application pour crypter vos fichiers avec aes et rsa

Soyez le premier à donner votre avis sur cette source.

Vue 20 593 fois - Téléchargée 2 685 fois

Description

Le programme encrypte un fichier en utilisant une clé générée de façon aléatoire et l?algorithme AES (Advanced Encryption Standard) en mode CFB (Cipher Feedback). La clé est ensuite encryptée en utilisant une clé publique RSA et stockée dans un fichier. Pour décrypter le fichier, il faut décrypter la clé en utilisant la clé privée RSA et ensuite décrypter le fichier avec AES-CFB. Les clés RSA peuvent être générées avec le programme.

Ce programme est constitué d'une librairie en C++ utilisant la librairie MIRACL (http://www.shamus.ie/). Cette librairie implémente toutes les primitives nécessaires en cryptographie. Une interface graphique est disponible en Java.

Conclusion :


Le code fonctionne sous Windows et Linux.
Sous Windows, j'ai utilisé le compilateur Microsoft Visual Studio 2003 et sous Linux, un makefile est fourni pour compiler avec gcc (vous devez changer le chemin de la bibliothèque JNI).
Si vous avez des problèmes pour exécuter le programme, n'hésitez pas à m'en faire part.
Ce programme est également disponible ici : http://lucchia.free.fr/Projects.php

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
12 août 2007

bon travail avec une bonne interface graphique
Messages postés
34
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
25 août 2007
1
En fait je travaille sous visual studio 2005 ( visual c++)

j'ai réussi à trouver des méthodes pour crypter et décrypter mais le problème est que ca ne crypte que des fichiers txt .
ca peut crypter d'autres types de fichiers par exemole un test.zip, mais si je le crypte et je le decrypte j'aurais par exemple un fichier test1.zip
ce fichier quand je veux l'ouvrir il me dit fichier corrompu!
je me suis dit que peut être t'aura une idée!

est ce que quelqu'un a une idée pour pouvoir crypter et decrypter tout genre de fichier
voici le code:

public

:

void GenerateKey(String ^SecretPhrase, array < unsigned char > ^&Key, array < unsigned char > ^&IV)

{

array < unsigned char > ^bytePhrase = Encoding::ASCII->GetBytes(SecretPhrase);

SHA384Managed ^sha384 = gcnew SHA384Managed();

sha384->ComputeHash(bytePhrase);

array < unsigned char > ^result = sha384->Hash;

for ( int loop = 0; loop < 24; loop++)

Key[loop] = result[loop];

for ( int loop = 24; loop < 40; loop++)

IV[loop - 24] = result[loop];

}

public

:

String ^ Crypter(String ^original, String ^keyPhrase)

{

array < unsigned char > ^Key = gcnew array < unsigned char >(24);

array < unsigned char > ^IV = gcnew array < unsigned char >(16);

GenerateKey(keyPhrase, Key, IV);

ASCIIEncoding ^textConverter = gcnew ASCIIEncoding();

RijndaelManaged ^myRijndael = gcnew RijndaelManaged();

array < unsigned char > ^encrypted;

array < unsigned char > ^toEncrypt;

myRijndael->Key = Key;

myRijndael->IV = IV;

ICryptoTransform ^encryptor = myRijndael->CreateEncryptor(Key, IV);

MemoryStream ^msEncrypt = gcnew MemoryStream();

CryptoStream ^csEncrypt = gcnew CryptoStream(msEncrypt, encryptor, CryptoStreamMode::Write);

toEncrypt = textConverter->GetBytes(original);

csEncrypt->Write(toEncrypt, 0, toEncrypt->Length);

csEncrypt->FlushFinalBlock();

encrypted = msEncrypt->ToArray();

return Convert::ToBase64String(encrypted);

}

public :

String ^ Decrypter(String ^ encryptedString, String ^keyPhrase)

{

array < unsigned char > ^Key = gcnew array < unsigned char >(24);

array < unsigned char > ^IV = gcnew array < unsigned char >(16);

GenerateKey(keyPhrase, Key, IV);

array < unsigned char > ^encrypted = Convert::FromBase64String(encryptedString);

array < unsigned char > ^fromEncrypt;

RijndaelManaged ^myRijndael =

gcnew RijndaelManaged();

ASCIIEncoding ^textConverter =

gcnew ASCIIEncoding();

myRijndael->Key = Key;

myRijndael->IV = IV;

ICryptoTransform ^decryptor = myRijndael->CreateDecryptor(Key, IV);

MemoryStream ^msDecrypt = gcnew MemoryStream(encrypted);

CryptoStream ^csDecrypt = gcnew CryptoStream(msDecrypt, decryptor, CryptoStreamMode::Read);

fromEncrypt = gcnewarray < unsignedchar >(encrypted->Length);

csDecrypt->Read(fromEncrypt, 0, fromEncrypt->Length);

return textConverter->GetString(fromEncrypt);

}

int main( array <System::String ^> ^args){



StreamReader ^sr = gcnew StreamReader( this ->val3);

StreamWriter ^sw = gcnew StreamWriter( this ->val5);

try

{

String ^a = Crypter(sr->ReadToEnd(), this ->GetValue1());

sw->Write(a);

}

catch (Exception^)

{

}

finally

{

sr->Close();

sw->Close();

}

StreamReader ^sr = gcnew StreamReader( this ->val3);

StreamWriter ^sw = gcnew StreamWriter( this ->val5);

try

{

String ^a = Decrypter(sr->ReadToEnd(), this ->GetValue1());

sw->Write(a);

}

catch (Exception^)

{

}

finally

{

sr->Close();

sw->Close();

}
return0;
}
Messages postés
103
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
10 février 2008

Je m'excuse j'ai pas tout lu :) , désolé :)
Messages postés
103
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
10 février 2008

Mais ! Mais ! C'est du JAVA, on est en C/C++ là non ?

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.