HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

SOAP üzenet titkosítása RC2 algoritmussal


Példaprogram letöltése

19466 bájt

Az Internet, mint kommunikációs csatorna végtelen lehetőséget rejt az információ megosztása, mozgatása szempontjából. Azonban – lévén szó egy nem-biztonságos közegről – megfelelő óvintézkedéseket ajánlatos tenni az adataink védelme érdekében, amennyiben ezeket az Internetre tereljük. Ajánlatos adatainkat titkosított formában mozgatni alkalmazásaink között. Cikkünkben bemutatunk egy példát arra vonatkozóan, hogyan használhatjuk a RC2 algoritmust egy Webes szerviz alkalmazástól kapott adathalmaz kódolására, valamint a kliens-oldalon ennek visszafejtésére.

Mellékelt példa megnyitása előtt szükséges egy RC2Service nevű virtuális könyvtár létrehozása, mely a példa mappájában található RC2Service alkönyvtárra mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A szerviz alkalmazás futtatása előtt gondoskodnunk kell arról, hogy a Web szerver virtuális mappájában engedélyezzük a névtelen hozzáférést.
Szerviz alkalmazás
A szerviz alkalmazásunkban a RC2 algoritmus felhasználásával titkosítunk egy karakterláncot, majd ezt a bináris adatfolyamot egy bájttömbben visszaadjuk.
A megoldásban a privát kulcsos titkosítást alkalmaztuk, mely azt jelenti, hogy mindkét, a kommunikációban részt vevő programnak ugyanazzal a kulccsal kell rendelkeznie, mely kulcsot csak a kommunikációban résztvevő felek ismerhetik.
A titkosítás esetén az úgynevezett UTF-8 kódolást használjuk, így a szövegben megtalálható ékezetes karakterek is tökéletesen átküldhetők.
UTF8Encoding converter = new UTF8Encoding();
A kódoláshoz létrehozunk egy RC2CryptoServiceProvider objektumot.
RC2CryptoServiceProvider provider = new RC2CryptoServiceProvider();
A kódolás kulcsát és az inicializáló vektort egy-egy byte-tömbben helyezzük el.
byte[] key = {2, 55, 86, 23, 2, 21, 111, 132, 222, 182, 72, 132, 12, 3, 231, 12};
byte[] iv = {12, 231, 34, 242, 52, 12, 8, 21, 98, 33, 48, 78, 57, 11, 49, 88};
A transzformáló objektumot ezekkel az információkkal képezzük az objektum CreateEncryptor metódus segítségével.
ICryptoTransform encryptor = provider.CreateEncryptor(key, iv);
Szükségünk van egy MemoryStream objektumra.
MemoryStream mStream = new MemoryStream();
És a titkos adatfolyamot tároló CryptoStream objektumra.
CryptoStream cStream = new CryptoStream(mStream, encryptor, CryptoStreamMode.Write);
A titkosítandó üzenetet bájt-formátumra hozzuk.
from = converter.GetBytes(message);
A bájtfolyamot a titkos adatfolyamba írjuk, majd a kapott információt egy újabb bájttömbben helyezzük, mely már a metódus visszatérési értéke lesz.
cStream.Write(from, 0, from.Length);
cStream.FlushFinalBlock();
to = mStream.ToArray();
Érdemes egy pillantást vetni a kódolt információra, mely egy SOAP borítékban utazik a SOAP csatornán.
<?xml version="1.0" encoding="utf-8" ?> 
  <base64Binary xmlns="http://tempuri.org/">vSdEIFyB2H3YQ4iwJqZjDw==</base64Binary>
Kliens-alkalmazás
Első lépésként egy Webes referenciát kell a kliensünkhöz adni, melynek eredményeképpen egy Reference.cs állomány adódik a projekthez. Ez tartalmazza a proxy osztály kódját, melyben az RC2Service osztályt a LOCALHOST névtéren keresztül érhetünk el.
localhost.RC2Service proxy = new localhost.RC2Service();
byte[] from = proxy.SendSecureMessage();
A visszakapott bájttömb visszafejtéséhez azokat az objektumokat használjuk, mint a szerviz alkalmazás esetén, csak itt alapvetően egy olvasási műveletről van szó.
ICryptoTransform decryptor = provider.CreateDecryptor(key, iv);
MemoryStream mStream = new MemoryStream(from);
CryptoStream cStream = new CryptoStream(mStream, decryptor, CryptoStreamMode.Read);
A művelet akkor lesz sikeres, ha a titkosításhoz felhasznált kulcsok azonosak a szervizben megadott kulcsokkal.
A titkosított adatfolyamból a konverziós objektum felhasználásával kiolvassuk az új, már a titkosítatlan szöveget tartalmazó bájtsort.
cStream.Read(to, 0, to.Length);
Majd karakterlánccá konvertáljuk, és megjelenítjük a szövegmezőben.
textBox1.Text = converter.GetString(to);
A visszafejtés természetesen itt is UTF-8 szabványú.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 405. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |