CAPICOM One
Geschrieben von: Christoph Wille Relativ unbemerkt hat Microsoft im Vorjahr CAPICOM - einen COM Client für das CryptoAPI - im "Windschatten" von Windows XP released. Dabei handelt sich um ein Set sehr nützlicher kryptographischer Komponenten, die in jeder Programmiersprache mit Automation Unterstützung verwendet werden können - von Visual Basic bis hin zur kleinen Verwandtschaft in ASP, VBScript. CAPICOM bietet Komponenten zur Ver- und Entschlüsselung (in der Version 1.0 sind nur symmetrische Algorithmen mit dabei), Komponenten zur Signierung von Daten und der bequemen Handhabung von Zertifikaten (mit und ohne User Interface, je nach Wunsch). Im heutigen Artikel beschränke ich mich auf Ver- und Entschlüsselung, da dies speziell für ASP ein größeres Anwendungsgebiet findet. InstallationDer erste Schritt ist der Download des CAPICOM Redistributables als Teil des Platform SDK's. Von der Downloadseite holen wir uns ein selbstextrahierendes Archiv, das die Datei capicom.dll im x86 Unterverzeichnis des Zielverzeichnisses speichert. Diese capicom.dll kopiert man in system32 Verzeichnis, und führt dann noch folgenden Befehl aus: regsvr32 capicom.dll Wenn man Anwendungen verteilt, kann man diese DLL in das Setup aufnehmen, und am Zielrechner automatisch registrieren lassen. Verschlüsseln von DatenCAPICOM ist erfolgreich installiert - nun heißt es, sich mit den neuen Komponenten vertraut zu machen. Was ist da besser, als ein kleines Beispiel zu programmieren: es soll Text mit Triple-DES verschlüsseln, und an den Client ausgeben. Daß dies wirklich leicht implementiert werden kann, zeigt der Sourcecode von encrypt.asp: <% Const CAPICOM_ENCRYPTION_ALGORITHM_RC2 = 0 ' Use RSA RC2 encryption. Const CAPICOM_ENCRYPTION_ALGORITHM_RC4 = 1 ' Use RSA RC4 encryption. Const CAPICOM_ENCRYPTION_ALGORITHM_DES = 2 ' Use DES encryption. Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3 ' Use triple DES encryption. strTestMessage = "Hello World!" strPassphrase = "A#0x?\$dE<" ' NIEMALS die Passphrase "herumliegen" lassen Set xEncrypt = Server.CreateObject("CAPICOM.EncryptedData") xEncrypt.Content = strTestMessage xEncrypt.SetSecret strPassphrase xEncrypt.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_3DES strEncryptedMsg = xEncrypt.Encrypt() Response.Write strEncryptedMsg %> Zuerst erstellt man das Objekt, weist den zu verschlüsselnden Text der Eigenschaft Content zu, setzt das Secret mittels SetSecret Methode, und dann müßte man nur noch Encrypt aufrufen. Um festzulegen, mittels welchem Algorithmus verschlüsselt wird, bedient man sich der Algorithm Eigenschaft, die ein gleichnamiges Objekt liefert, das die Name Eigenschaft besitzt - und hier kann man dann aus vier Algorithmen wählen: RC2, RC4, DES und Triple-DES. Wer jemals in das normale C API des CryptoAPI hineingeschnuppert hat, der wird ob der leichten Verwendbarkeit entzückt sein. Und es wird auch nicht schwieriger, wenn man einstellen will, welche Schlüssellänge für den jeweiligen Algorithmus verwendet werden soll. Ein paar Konstanten mehr, sonst nichts, wie der Code in highencpack.asp demonstriert: <% Const CAPICOM_ENCRYPTION_ALGORITHM_RC2 = 0 ' Use RSA RC2 encryption. Const CAPICOM_ENCRYPTION_ALGORITHM_RC4 = 1 ' Use RSA RC4 encryption. Const CAPICOM_ENCRYPTION_ALGORITHM_DES = 2 ' Use DES encryption. Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3 ' Use triple DES encryption. Const CAPICOM_KEY_LENGTH_MAXIMUM = 0 ' Use the maximum key length available... Const CAPICOM_KEY_LENGTH_40_BITS = 1 ' Use 40-bit keys. Const CAPICOM_KEY_LENGTH_56_BITS = 2 ' Use 56-bit keys if available. Const CAPICOM_KEY_LENGTH_128_BITS = 3 ' Use 128-bit keys if available strTestMessage = "Hello World!" strPassphrase = "A#0x?\$dE<" ' NIEMALS die Passphrase "herumliegen" lassen Set xEncrypt = Server.CreateObject("CAPICOM.EncryptedData") xEncrypt.Content = strTestMessage xEncrypt.SetSecret strPassphrase ' Key lengths for DES and 3DES encryption are standard and the key length ' property is ignored when these algorithms are used. xEncrypt.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_RC4 xEncrypt.Algorithm.KeyLength = CAPICOM_KEY_LENGTH_128_BITS strEncryptedMsg = xEncrypt.Encrypt() Response.Write strEncryptedMsg %> EntschlüsselnFast selbstverständlich funktioniert das Entschlüsseln ähnlich einfach wie das Verschlüsseln. Der Unterschied ist, daß man die Funktion Decrypt mit dem Ciphertext "füttern" muß, und bei der Content Eigenschaft kommt dann der Plaintext wieder heraus (decrypt.asp): <% Const CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3 ' Use triple DES encryption. strCipherText = "MGoGCSsGAQQBgjdYA6BdMFsGCisGAQQBgjdYAwGgTTBLAgMBAAACAmYDAgIAwAQI" & vbCrlf & _ "JZjDl4H5hRIEEOdot2WroaM35Vr5FVAl/e8EIL7qaJJeuMBQC4625aKdH8u8hgd5" & vbCrlf & _ "rsyBD3jAok7fbdCG" strPassphrase = "A#0x?\$dE<" ' NIEMALS die Passphrase "herumliegen" lassen Set xEncrypt = Server.CreateObject("CAPICOM.EncryptedData") xEncrypt.SetSecret strPassphrase xEncrypt.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_3DES xEncrypt.Decrypt(strCipherText) strPlainText = xEncrypt.Content Response.Write strPlainText %> Zur Auflösung - es kommt natürlich "Hello World!" beim Client an. SchlußbemerkungVer- und Entschlüsseln ist nur ein Feature von CAPICOM - ein sehr nützliches. Für eine Besprechung der weiteren Features empfehle ich die Links am Ende dieses Artikels. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Aber bitte mit Rijndael Links zu anderen Sites
CAPICOM Dokumentation Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |