Hi,
ich muss in meine anwendung eine AES (Rijndael) - Verschlüsslung einbauen um einen QString zu ver- und wieder entschlüsseln, bzw. ein QByteArray, da ich nur ein 8-Bit-Zeichensatz brauche.
Ich dachte, dass ich die crypto++-libraries verwende... hat das hier schonmal jemand gemacht und mir vielleicht ein kleines beispiel?
Ich find einfach keine gute doku zur crypto++ :-/
danke,
jonas
Crypto++
wie wär's mit dem Beispiel:
hilft dir das weiter?
Elgrimm Esleborn
Code: Alles auswählen
# include <cryptlib.h>
# include <md5.h>
using namespace CryptoPP;
inline char MakeHexa ( unsigned char f_number )
{
switch ( f_number )
{
case 0:
return '0';
case 1:
return '1';
case 2:
return '2';
case 3:
return '3';
case 4:
return '4';
case 5:
return '5';
case 6:
return '6';
case 7:
return '7';
case 8:
return '8';
case 9:
return '9';
case 10:
return 'A';
case 11:
return 'B';
case 12:
return 'C';
case 13:
return 'D';
case 14:
return 'E';
case 15:
return 'F';
default:
return 'X';
}
}
QByteArray MakeMd5 ( const QByteArray &f_data )
{
unsigned char p_data [ MD5::DIGESTSIZE ];
char a_result [ MD5::DIGESTSIZE * 2 + 1 ];
a_result [ MD5::DIGESTSIZE * 2 ] = '\0';
MD5 ( ).CalculateDigest ( p_data, ( const unsigned char * ) f_data.constData ( ), f_data.length ( ) );
MakeHexa ( p_data, a_result, MD5::DIGESTSIZE );
return a_result;
}Elgrimm Esleborn
Glaube an eine Lösung, nur dann kannst du auch eine finden.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Hi,
@Esleborn:
Danke, ich werd mal schauen wie weit ich das Beispiel für eine AES-Verschlüsslung verwenden kann.
@BartSimpson:
Kann openSSL denn auch AES (Rijndael) ver- und wieder entschlüsseln?
Mein Problem ist, dass ich auf bereits verschlüsselte Daten zugreifen muss und nicht einfach eine andere verschlüsslung verwenden darf.
Thanx,
Jonas
@Esleborn:
Danke, ich werd mal schauen wie weit ich das Beispiel für eine AES-Verschlüsslung verwenden kann.
@BartSimpson:
Kann openSSL denn auch AES (Rijndael) ver- und wieder entschlüsseln?
Mein Problem ist, dass ich auf bereits verschlüsselte Daten zugreifen muss und nicht einfach eine andere verschlüsslung verwenden darf.
Thanx,
Jonas
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Ja. Denn openSSL bessteht aus Mehren Teilen ein Modul für SSL/TLS und eins für reine Verschlüsselung/Signierung
es wird bei AES folgendes unterstützt:
es wird bei AES folgendes unterstützt:
Code: Alles auswählen
const EVP_CIPHER *EVP_aes_128_ecb(void);
const EVP_CIPHER *EVP_aes_128_cbc(void);
const EVP_CIPHER *EVP_aes_128_cfb1(void);
const EVP_CIPHER *EVP_aes_128_cfb8(void);
const EVP_CIPHER *EVP_aes_128_cfb128(void);
# define EVP_aes_128_cfb EVP_aes_128_cfb128
const EVP_CIPHER *EVP_aes_128_ofb(void);
#if 0
const EVP_CIPHER *EVP_aes_128_ctr(void);
#endif
const EVP_CIPHER *EVP_aes_192_ecb(void);
const EVP_CIPHER *EVP_aes_192_cbc(void);
const EVP_CIPHER *EVP_aes_192_cfb1(void);
const EVP_CIPHER *EVP_aes_192_cfb8(void);
const EVP_CIPHER *EVP_aes_192_cfb128(void);
# define EVP_aes_192_cfb EVP_aes_192_cfb128
const EVP_CIPHER *EVP_aes_192_ofb(void);
#if 0
const EVP_CIPHER *EVP_aes_192_ctr(void);
#endif
const EVP_CIPHER *EVP_aes_256_ecb(void);
const EVP_CIPHER *EVP_aes_256_cbc(void);
const EVP_CIPHER *EVP_aes_256_cfb1(void);
const EVP_CIPHER *EVP_aes_256_cfb8(void);
const EVP_CIPHER *EVP_aes_256_cfb128(void);
# define EVP_aes_256_cfb EVP_aes_256_cfb128
const EVP_CIPHER *EVP_aes_256_ofb(void);
ääh.. okay 
Also was ich weiß ist, dass ich eine schlüssellänge von 32 Byte und einen Startvektor mit 16 Byte brauche...
was das ecb, cbc oder cfb bedeutet weiß ich jetzt nicht, aber ich werd mir das mit openSSL auf jedenfall auch mal nähen anschauen.
Oder hast Du zufälligerweise schon ein Beispiel dafür?
Danke, Jonas
Der VB.NET - Code der Verschlüsslung ist der hier:
Also was ich weiß ist, dass ich eine schlüssellänge von 32 Byte und einen Startvektor mit 16 Byte brauche...
was das ecb, cbc oder cfb bedeutet weiß ich jetzt nicht, aber ich werd mir das mit openSSL auf jedenfall auch mal nähen anschauen.
Oder hast Du zufälligerweise schon ein Beispiel dafür?
Danke, Jonas
Der VB.NET - Code der Verschlüsslung ist der hier:
Code: Alles auswählen
Dim num() As Byte = {66, 25, 118, 201, 36, 75, 99, 120, 57, 9, 229, 186, 37, 74, 69, 152}
Dim strKey As String = "=!@4Fguip:}109NmkDW;>%}zxB>?4Rtd"
Public Function Encrypt(ByVal Text As String) As String
Dim Data() As Byte
Dim Output() As Byte
Dim Key() As Byte
Data = System.Text.Encoding.Default.GetBytes(Text)
Key = System.Text.Encoding.Default.GetBytes(strKey)
Dim Rijn As New Security.Cryptography.RijndaelManaged
Dim trans As Security.Cryptography.ICryptoTransform = Rijn.CreateEncryptor(Key, num)
Output = trans.TransformFinalBlock(Data, 0, Data.Length)
Return ByteToHex(Output)
End Function-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Ich mag das ganze .net zeugs nicht.
Aber eventuell hilft dir der Link etwas zum Verständnis zur Kryptographie
http://www.cipherbox.de
Aber eventuell hilft dir der Link etwas zum Verständnis zur Kryptographie
http://www.cipherbox.de