Cryptlib hat zwar ein ausführliche Dokumentation, jedoch im Detail fehlen oft Informationen. Ein gutes Beispiel ist die pubkeyContext-Variable die zwar mehrfach benutzt wird, jedoch keine wirkliche Erläuterung hat. Aus diesem Grund werde ich hier auf der Seite ein paar einfache Beispiele veröffentlichen wie manche Dinge funktionieren.

Heute fangen wir mal mit einfachem Ver- und Entschlüsseln an. Ich hatte dabei das Problem, dass ich an dem Message-Buffer verzweifelt bin. Es ist leider nicht genau beschrieben wie man bei Verschlüsselungen zurück schließen kann auf den Text der Eingabe. Bei Cryptlib ist auch die Einstellung der Attibute und Variablen wichtig, deshalb genau so wie sie hier stehen. Im Folgenden sind die Verschlüsselung und die Entschlüsselung in C#.
private static byte[] encrypt(String message) {
int bytescopied;
byte[] envelopedData = new byte[100];
int cryptEnvelope = crypt.CreateEnvelope(crypt.UNUSED, crypt.FORMAT_PKCS7);
crypt.SetAttribute(cryptEnvelope, crypt.ENVINFO_DATASIZE, message.Length);
bytescopied = crypt.PushData(cryptEnvelope, message);
crypt.FlushData(cryptEnvelope);
bytescopied = crypt.PopData(cryptEnvelope, envelopedData, envelopedData.Length);
crypt.DestroyEnvelope(cryptEnvelope);
return envelopedData;
}
private static String decrypt(byte[] decmessage)
{
int bytescopied;
string label = "Private_Key";
int privKeyContext = crypt.CreateContext(crypt.UNUSED, crypt.ALGO_AES);
byte[] messagebuffer = new Byte[decmessage.Length];
int envelope = crypt.CreateEnvelope(crypt.UNUSED, crypt.FORMAT_AUTO);
privKeyContext = crypt.CreateContext(crypt.UNUSED, crypt.ALGO_AES);
bytescopied = crypt.PushData(envelope, decmessage);
crypt.SetAttributeString(privKeyContext, crypt.CTXINFO_LABEL, label);
crypt.DestroyContext(privKeyContext);
crypt.FlushData(envelope);
bytescopied = crypt.PopData(envelope, messagebuffer, messagebuffer.Length);
crypt.DestroyEnvelope(envelope);
return System.Text.Encoding.UTF8.GetString(messagebuffer);
}
Bei Fragen, einfach einen Kommentar schreiben.
Grüße
Benjamin Peters-Rumpf
Discussion
Keine Kommentare zu “Cryptlib-Tutorial/Hilfe: Verschlüsseln und Entschlüsseln”
Kommentieren