Symmetric Key Encryption using Rijndael and C#

Published Monday, July 26, 2004 10:19 PM

Security remains the primary concern of on-line consumers and individuals who wish to keep their private documents private. Cryptography is the process associated with keeping messages secure. The process of converting plaintext to cipher text is called encryption and the process of reconverting the cipher text into plaintext is called decryption. Cryptography algorithms (ciphers) are mathematical functions used for encryption and decryptions.

 

There are two types of encryption, namely asymmetric encryption and symmetric encryption. Asymmetric encryption uses one key (the public key) to encrypt a message and a different key (the private key) to decrypt a message, or the other way around. Symmetric encryption uses the same key (the secret key) to encrypt and decrypt a message; messages encrypted with a secret key can be decrypted only with the same secret key.

 

The .Net framework is developed from the ground up with security in mind; the System.Security.Cryptography namespace provides classes for Symmetric Encryption, Asymmetric Encryption, Hashing, Digital Signatures, Digital Certificates and XML Signatures.

 

The rest of this article is going to concentrate on symmetric key encryption.

With the .Net framework, we have 4 choices of symmetric encryption algorithms:

  • DES
  • Triple DES
  • RC2
  • Rijndael

DES

 

The Data Encryption Standard (DES) was developed by an IBM team around 1974 and adopted as a national standard in 1977. DES encrypts and decrypts data in 64-bit blocks, using a 64-bit key. Although the input key for DES is 64 bits long, the actual key used by DES is only 56 bits in length. The least significant (right-most) bit in each byte is a parity bit, and should be set so that there are always an odd number of 1s in every byte. These parity bits are ignored, so only the seven most significant bits of each byte are used, resulting in a key length of 56 bits.

 

Triple DES

 

Triple DES is three times slower than regular DES but can be billions of times more secure if used properly. Triple DES is simply another mode of DES operation. It takes three 64-bit keys, for an overall key length of 192 bits. The procedure for encryption is exactly the same as regular DES, but it is repeated three times, hence the name Triple DES. The data is encrypted with the first key, encrypted with the second key, and finally encrypted again with the third key. Triple DES enjoys much wider use than DES because DES is so easy to break with today's rapidly advancing technology.

 

RC2

RC2 (Rivest Cipher) was designed by Ron Rivest as a replacement for DES and boasts a 3 times speed increase over DES. The input and output block sizes are 64 bits each. The key size is variable, from one byte up to 128 bytes, although the current implementation uses eight bytes. The algorithm is designed to be easy to implement on 16-bit microprocessors.

Rijndael

The National Institute of Standards and Technology (NIST) officially announced that Rijndael, designed by Joan Daemen and Vincent Rijmen, would be the new Advanced Encryption Standard.

The Advanced Encryption Standard (AES) is the current encryption standard, intended to be used by  the U.S. Government organisations to protect sensitive (and even secret and top secret) information. It is also becoming a global standard for commercial software and hardware that use encryption. It is a block cipher which uses 128-bit, 192-bit or 256-bit keys. Rijndael is very secure and has no known weaknesses.

 

Enter the Code:

 

Ok, now that we have got all of the background out of the way lets get started with the fun stuff. Lets take a look at the code, here is a simple implementation of the Rijndael algorithm. We will start with the encryption process first.

 

Encryption

 

private static string EncryptString(string InputText, string Password)

{

// We are now going to create an instance of the

// Rihndael class. 

RijndaelManaged RijndaelCipher = new RijndaelManaged();

 

// First we need to turn the input strings into a byte array.

byte[] PlainText = System.Text.Encoding.Unicode.GetBytes(InputText);

 

// We are using salt to make it harder to guess our key

// using a dictionary attack.

byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());

 

// The (Secret Key) will be generated from the specified

// password and salt.

PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);

 

// Create a encryptor from the existing SecretKey bytes.

// We use 32 bytes for the secret key

// (the default Rijndael key length is 256 bit = 32 bytes) and

// then 16 bytes for the IV (initialization vector),

// (the default Rijndael IV length is 128 bit = 16 bytes)

ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));

 

// Create a MemoryStream that is going to hold the encrypted bytes

MemoryStream memoryStream = new MemoryStream();

 

// Create a CryptoStream through which we are going to be processing our data.

// CryptoStreamMode.Write means that we are going to be writing data

// to the stream and the output will be written in the MemoryStream

// we have provided. (always use write mode for encryption)

CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write);

                 

// Start the encryption process.

cryptoStream.Write(PlainText, 0, PlainText.Length);

                 

// Finish encrypting.

cryptoStream.FlushFinalBlock();

 

// Convert our encrypted data from a memoryStream into a byte array.

byte[] CipherBytes = memoryStream.ToArray();

 

 

 

// Close both streams.

memoryStream.Close();

cryptoStream.Close();

       

// Convert encrypted data into a base64-encoded string.

// A common mistake would be to use an Encoding class for that.

// It does not work, because not all byte values can be

// represented by characters. We are going to be using Base64 encoding

// That is designed exactly for what we are trying to do.

string EncryptedData = Convert.ToBase64String(CipherBytes);

 

// Return encrypted string.

return EncryptedData;

}

 

Decryption

 

Most of the logic in decryption is similar to the encryption logic.

Let’s take a quick look at how the decryption works.

 

private static string DecryptString(string InputText, string Password)

{

RijndaelManaged  RijndaelCipher = new RijndaelManaged();

 

byte[] EncryptedData = Convert.FromBase64String(InputText);

byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());

       

PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);

       

// Create a decryptor from the existing SecretKey bytes.

ICryptoTransform Decryptor = RijndaelCipher.CreateDecryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));

 

MemoryStream  memoryStream = new MemoryStream(EncryptedData);

           

// Create a CryptoStream. (always use Read mode for decryption).

CryptoStream  cryptoStream = new CryptoStream(memoryStream, Decryptor, CryptoStreamMode.Read);

 

// Since at this point we don't know what the size of decrypted data

// will be, allocate the buffer long enough to hold EncryptedData;

// DecryptedData is never longer than EncryptedData.

byte[] PlainText = new byte[EncryptedData.Length];

       

// Start decrypting.

int DecryptedCount = cryptoStream.Read(PlainText, 0, PlainText.Length);

               

memoryStream.Close();

cryptoStream.Close();

       

// Convert decrypted data into a string.

string DecryptedData = Encoding.Unicode.GetString(PlainText, 0, DecryptedCount);

       

// Return decrypted string.  

return DecryptedData;

}

 

Encrypting a file

 

The only difference in, encrypting a file is that we use a file stream instead of a memory stream.

 

private static void EncryptFile(string FileLocation, string FileDestination, string Password)

{

RijndaelManaged  RijndaelCipher = new RijndaelManaged();

 

// First we are going to open the file streams

FileStream fsIn = new FileStream(FileLocation, FileMode.Open, FileAccess.Read);

FileStream fsOut = new FileStream(FileDestination, FileMode.Create, FileAccess.Write);

 

byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());

       

PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);

 

ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));

 

CryptoStream cryptoStream = new CryptoStream(fsOut, Encryptor, CryptoStreamMode.Write);

 

int ByteData;

while ((ByteData=fsIn.ReadByte()) != -1)

{

      cryptoStream.WriteByte((byte)ByteData);

}

 

cryptoStream.Close();

fsIn.Close();

fsOut.Close();

}

 

The decrypting of a file is very similar to the encrypting of a file.

 

Conclusion:

 

The encryption/decryption sample above had a very defined purpose, being extremely easy to read and understand. While it explains how to use encryption and gives some ideas on how to start implementing encryption in your applications, you should add parameter checking and error handling. Wrap calls that can potentially fail into try/catch blocks, use finally blocks to release resources if something goes wrong.

 

Download: Source code

by deon
Filed under:

Comments

# martin h said on Friday, October 29, 2004 3:03 PM

Well explained and right to the point.

Thanks.

-- martin

# Marc Gatley said on Saturday, October 30, 2004 12:22 PM

Excellent work!

You saved me from a lot of bumps on my head :).

Marc

# Ruben Perez said on Tuesday, May 03, 2005 3:48 AM

Yes, seriously Deon, you put together the most concise workable example I've found on this subject... and I've really, really looked alot!

Thank you, thank you, thank you,

-R

www.renderRocket.com

# Innocentia said on Thursday, May 19, 2005 3:25 PM

This is great!I need a standard associated with Rindael

# A B said on Saturday, June 18, 2005 9:29 PM

Great Job. It takes care of my problem of storing confidential details of customers.

# philippesohm said on Wednesday, February 15, 2006 5:30 PM

Hello,
when you initialize the Rijndael Cipher with :

ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));

You initialize the IV value, the IV _should not_ be used twice (or more) for security reasons.
In this case, you should generate the IV with :
RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32))
and give the IV generated with Encryptor.IV
you can give it transfer it freely (but never use it twice)

# dfghdfgh said on Wednesday, May 23, 2007 1:53 PM

fgh

# Ilia Dobrev said on Monday, May 28, 2007 1:56 PM

This is a very good code Deon, thank you for sharing your knowledge

# Ilia Dobrev said on Monday, May 28, 2007 2:04 PM

This is a very good code Deon, thank you for sharing your knowledge

# A.S. Hansen, DK said on Wednesday, July 25, 2007 10:36 AM

Great and precise article about this subject. Great job!

# Hardy said on Thursday, August 09, 2007 11:12 PM

I got "Padding is invalid and cannot be removed." exception while running int decryptedCount = cryptoStream.Read(plainText, 0, plainText.Length);

Could you please tell me why?

hardywang@hotmail.com

# Naseera said on Friday, October 05, 2007 5:00 PM

I could not get the source code. Can you please tell me how do I get that

# Marcus Lafty said on Monday, October 15, 2007 10:44 PM

this example is pretty good, however it might be mor econvenient to except filename for nput and output file then you could work on straight file encryption. you could open up filestreams then use them within the crypto streams  and if you needed to write anyting else to the file without running it through the crypto streams then you could use a binary writer object. jus ta thought.

dni_user@yahoo.com

.NET C# freak (CSLA, WCF)

# Jon Skeet said on Tuesday, October 16, 2007 4:20 PM

I believe you've missed the point of using a salt. If the salt is based directly on the password, it doesn't improve the security at all. The idea is that it's random data to prevent dictionary attacks.

See en.wikipedia.org/.../Salt_(cryptography) and www.hackerthreads.org/.../viewtopic.php

Jon

# Rob Ellis said on Tuesday, January 15, 2008 4:43 PM

Thanks for the code. Been looking all over the place. Lots of code, most of it useless.

Thanks again!

Rob

# Peché Africa said on Saturday, January 19, 2008 3:34 PM

This example is really good. Great!

# planterb said on Saturday, January 26, 2008 11:09 AM

bestwelcomesign.info/aigner-purses.html

# movingbo said on Saturday, January 26, 2008 4:15 PM

welcomehomenow.info/i830-nextel-ringtone-software.html

# corrugat said on Saturday, January 26, 2008 9:02 PM

welcomehomeguest.info/fuzzy-nation-handbags.html

# boxbraid said on Sunday, January 27, 2008 1:14 AM

ebacklot.info/big-girl-lingerie.php

# iceboxre said on Sunday, January 27, 2008 1:27 AM

welcomehomeads.info/solar-women-watches.html

# corrugat said on Sunday, January 27, 2008 5:51 AM

today-is-good-day.info/viagra-womans.php

# storageb said on Sunday, January 27, 2008 2:29 PM

thewelcomesign.info/brown-leather-prada-purse.html

# musicbox said on Sunday, January 27, 2008 7:13 PM

time-out-london.info/fine-mens-watches.html

# videobox said on Sunday, January 27, 2008 11:35 PM

worldtalkmedia.info/download-harry-pottre-theme-ringtone.html

# boxoffic said on Monday, January 28, 2008 3:53 AM

wapshoponline.info/big-woman-lingerie.php

# alabaste said on Monday, January 28, 2008 10:28 AM

thebondcenter.info/nokia-ringtones.html

# commentb said on Monday, January 28, 2008 4:46 PM

superwelcomenew.info/seiko-dive-computers.html

# jewelryb said on Tuesday, January 29, 2008 4:34 AM

now-6-24.info/wholesale-purse-hanger.html

# freemovi said on Tuesday, January 29, 2008 2:01 PM

pricingprice.info/designer-clutch-handbag.html

# vtortola said on Thursday, January 31, 2008 7:39 PM

Puede ser... que el cifrado del archivo de configuración de tu aplicación no se adecue a la solución

# Pensando en asíncrono said on Thursday, January 31, 2008 7:40 PM

Puede ser... que el cifrado del archivo de configuración de tu aplicación no se adecue a la solución

# Supremelink said on Wednesday, February 27, 2008 1:23 PM

Useful links

# zxevil135 said on Saturday, March 01, 2008 2:21 AM

OiUoWD r u crazzy? I told u! I can't read!

# zxevil136 said on Saturday, March 01, 2008 10:15 PM

TXUSUm r u crazzy? I told u! I can't read!

# zxevil134 said on Thursday, March 06, 2008 11:51 PM

154JXi r u crazzy? I told u! I can't read, man!

# zxevil141 said on Friday, March 07, 2008 2:56 AM

ORk3Np r u crazzy? I told u! I can't read!

# zxevil150 said on Friday, March 07, 2008 8:39 PM

ZC9z8h r u crazzy? I told u! I can't read!

# zxevil151 said on Friday, March 07, 2008 11:38 PM

EFaZSr r u crazzy? I told u! I can't read!

# zxevil152 said on Saturday, March 08, 2008 3:04 AM

qa7VTe r u crazzy? I told u! I can't read!

# zxevil153 said on Saturday, March 08, 2008 6:00 AM

t9JsGX r u crazzy? I told u! I can't read!

# zxevil154 said on Saturday, March 08, 2008 8:27 AM

IkIXZ1 r u crazzy? I told u! I can't read!

# zxevil155 said on Saturday, March 08, 2008 11:01 AM

cetZGw r u crazzy? I told u! I can't read!

# zxevil163 said on Sunday, March 16, 2008 11:05 PM

6n1mbu Hi from Russia!

# zxevil165 said on Thursday, March 20, 2008 3:40 PM

OG5hl4 Cool, bro!

groups.google.com/.../1

[url=groups.google.com/.../1]clock screensaver[/url],

<a href="groups.google.com/.../1">clock screensaver</a>

# Supremelink said on Monday, March 31, 2008 11:11 AM

Useful links

# cpnzfvdepy said on Monday, April 14, 2008 1:17 PM

Yl1QGg  <a href="kztbskrwazda.com/.../a>, [url=http://tlrikmkafnug.com/]tlrikmkafnug[/url], [link=http://gbmmdlccpeni.com/]gbmmdlccpeni[/link], http://cpzpmxvzonpw.com/

# pvnoubyw said on Wednesday, May 07, 2008 2:23 PM

ocnR0L  <a href="gbdsrsawbdmn.com/.../a>, [url=http://pfspavewevpy.com/]pfspavewevpy[/url], [link=http://fevfswcujwtn.com/]fevfswcujwtn[/link], http://mjsdnyaytkgy.com/

# shmqljmtbaq said on Sunday, May 11, 2008 7:27 PM

dh4XOw  <a href="kkmfkyncxcre.com/.../a>, [url=http://ihnuplxseuju.com/]ihnuplxseuju[/url], [link=http://qrcsgjjigwye.com/]qrcsgjjigwye[/link], http://clbiadtjhznq.com/

# esenanvtabh said on Saturday, May 31, 2008 8:45 AM

z6F8s0  <a href="ldicoyxyaxzh.com/.../a>, [url=http://wybnsbwtimwp.com/]wybnsbwtimwp[/url], [link=http://nugtckriuvys.com/]nugtckriuvys[/link], http://opddllxhpgui.com/

# hpcnryf said on Wednesday, June 04, 2008 8:15 AM

VW58tk  <a href="pfeedoaoixck.com/.../a>, [url=http://htaucqjhsldh.com/]htaucqjhsldh[/url], [link=http://ahrpapmguxlh.com/]ahrpapmguxlh[/link], http://onrgzoobconc.com/

# Supremelink said on Thursday, June 12, 2008 10:01 AM

Useful programming tools

# bcpxaikncxl said on Sunday, June 22, 2008 5:52 AM

WI3u9q  <a href="ltehivrqnokt.com/.../a>, [url=http://vkgujttbwivk.com/]vkgujttbwivk[/url], [link=http://dltwxnqeoeto.com/]dltwxnqeoeto[/link], http://gqcvlljjmbbn.com/

# ufilpczc said on Tuesday, June 24, 2008 5:13 PM

Tj97Gd  <a href="kdwrpbahabkz.com/.../a>, [url=http://jmeywwjiogcj.com/]jmeywwjiogcj[/url], [link=http://iegiacvysrov.com/]iegiacvysrov[/link], http://zqvuxpdpnigu.com/

# Pedro Medina said on Sunday, June 29, 2008 7:33 PM

it `s very good.

# dczqmaee said on Friday, July 04, 2008 1:59 AM

3SdDgZ  <a href="snrsrqnovqcb.com/.../a>, [url=http://dhaoawvyemom.com/]dhaoawvyemom[/url], [link=http://wfeoszeonucr.com/]wfeoszeonucr[/link], http://bxccziabnaci.com/

# pknhiv said on Friday, July 04, 2008 2:43 AM

ZkVr6u  <a href="vawejxenlnii.com/.../a>, [url=http://isohospixzbk.com/]isohospixzbk[/url], [link=http://dtvndbntapis.com/]dtvndbntapis[/link], http://yzulcolwgxyl.com/

# jtexxxmc said on Friday, July 04, 2008 3:33 AM

NRLofA  <a href="cmzzpgstnvko.com/.../a>, [url=http://jpgvvxjwjtxh.com/]jpgvvxjwjtxh[/url], [link=http://qmhtsgdmsuon.com/]qmhtsgdmsuon[/link], http://fvraldcbwmya.com/

# sfbvhif said on Friday, July 04, 2008 9:21 AM

vkJfRi  <a href="bwyecixprkut.com/.../a>, [url=http://razntnlppkjo.com/]razntnlppkjo[/url], [link=http://itbupegkdggy.com/]itbupegkdggy[/link], http://nhwcpkhyfums.com/

# Demosthenes said on Saturday, July 05, 2008 3:52 AM

Regards and best wishes, wilmaabbott.007sites.com/.../map.html kiss day cookie gifts,  =-))),

# Dimitrios said on Saturday, July 05, 2008 4:13 AM

excellent resource, romantic-kiss-day-day-poems.grouptry.com/map.html friendship poem kiss day,  ubuowz,

# Dighenis said on Saturday, July 05, 2008 4:34 AM

Hi, kiss-day-gifts.grouptry.com/map.html kiss day gifts for boyfriend,  wwob,

# Demosthenes said on Saturday, July 05, 2008 4:53 AM

Great site, day-kiss.grouptry.com/map.html kiss on the 6th day,  >:DD,

# Dimitri said on Saturday, July 05, 2008 6:33 AM

Nice article…, lawnweb.extra.hu/.../index.html girl toe sucking,  izo,

# Dighenis said on Saturday, July 05, 2008 6:54 AM

Hi, fanniecollins.hostevo.com/.../index.html young whore sucking ***,  23398,

# Dighenis said on Saturday, July 05, 2008 7:34 AM

Nice article…, damonbetts.phreesite.com/.../index.html lolita penetration,  xwdp,

# Dimitri said on Saturday, July 05, 2008 7:54 AM

Nice article…, double-penetration-blast.oughtsite.com/map.html massive penetration in ***,  327210,

# Demosthenes said on Saturday, July 05, 2008 8:15 AM

Interesting, stephaniepalmer.domaingler.com/.../map.html home sucking,  64819,

# Dimitri said on Saturday, July 05, 2008 8:56 AM

Regards and best wishes, scooterportal.extra.hu/.../map.html sucking tom rasmussens *** the citadel in san jose,  =-(((,

# Demosthenes said on Saturday, July 05, 2008 9:19 AM

excellent resource, stephaniepalmer.domaingler.com/.../map.html no penetration and pregnancy,  xglyq,

# Demosthenes said on Saturday, July 05, 2008 9:35 AM

Interesting, day-kiss.grouptry.com/map.html party every day by kiss,  aefldf,

# Dimitrios said on Saturday, July 05, 2008 9:54 AM

Interesting, kiss-day-gifts.grouptry.com/map.html sexy kiss day day gift,  3590,

# Dighenis said on Saturday, July 05, 2008 10:14 AM

Hi, romantic-kiss-day-day-poems.grouptry.com/map.html cute kiss day poem rose are red,  whaft,

# Demosthenes said on Saturday, July 05, 2008 10:35 AM

Hi, romantic-kiss-day-day-poems.grouptry.com/map.html kiss day poems for boys,  704245,

# Demosthenes said on Saturday, July 05, 2008 10:56 AM

Nice article…, kiss-day-poems.grouptry.com/map.html kiss on the 6th day,  xafrh,

# Dighenis said on Saturday, July 05, 2008 11:17 AM

Hi, kiss-day-poems.grouptry.com/map.html how many hershey kiss wrappers are used in one day,  =OOO,

# Dimitrios said on Sunday, July 06, 2008 5:22 PM

Great site, anne-hathaway-soundtrack.greatlet.com/map.html soundtrack roadhouse,  alux,

# Dimitrios said on Sunday, July 06, 2008 6:30 PM

Great site, soundtrack-for-movie-in-the-mood-for-love.greatlet.com/map.html nicole nordeman iwhy soundtrack,  iybcgb,

# Dighenis said on Sunday, July 06, 2008 7:01 PM

excellent resource, the-faculty-soundtrack.greatlet.com/map.html parenthood soundtrack,  cyoylz,

# Dimitri said on Sunday, July 06, 2008 8:03 PM

Great site, virginiawalters.gigazu.com/.../map.html adult *** movies,  qyfy,

# Dighenis said on Sunday, July 06, 2008 8:35 PM

Nice article…, crunch-time-nfl-films-soundtrack-video.greatlet.com/map.html metroid soundtrack,  =)),

# Dimitrios said on Sunday, July 06, 2008 9:37 PM

excellent resource, house-on-haunted-hill-movie-soundtrack.greatlet.com/map.html soundtracks from the movie serpico,  27014,

# Dimitrios said on Sunday, July 06, 2008 10:08 PM

Interesting, deviil-may-cry-4-soundtrack.greatlet.com/map.html amazon music soundtrack beetlejuice,  jbww,

# Demosthenes said on Sunday, July 06, 2008 10:40 PM

Interesting, gundam-0079-bgm-soundtrack-mp3.greatlet.com/map.html blade trinity soundtrack,  fwilqp,

# Dimitri said on Sunday, July 06, 2008 11:17 PM

Regards and best wishes, braveheart-soundtrack.greatlet.com/map.html soundtrack for pull,  8DDD,

# Dimitri said on Sunday, July 06, 2008 11:44 PM

Nice article…, one-tree-hill-soundtrack.greatlet.com/map.html matchmaker soundtrack,  apf,

# Dighenis said on Monday, July 07, 2008 12:15 AM

Hi, wild-thornberrys-soundtrack-mp3.greatlet.com/map.html heartburn soundtrack carly simon,  %((,

# Demosthenes said on Monday, July 07, 2008 1:57 AM

excellent resource, accredited-degree-online.greatlet.com/map.html accredited aquatic fitness instructor,  24249,

# Dimitri said on Monday, July 07, 2008 2:27 AM

Hi, songs-from-the-movie-soundtrack-the-lost-boys.greatlet.com/map.html k pax soundtrack,  vpotx,

# bptajz said on Monday, July 07, 2008 2:43 AM

r1yJjO  <a href="npbjwddxsyml.com/.../a>, [url=http://wwvcanugujzt.com/]wwvcanugujzt[/url], [link=http://lnmmfxesocze.com/]lnmmfxesocze[/link], http://oppyxaiaqfpe.com/

# yytghfwux said on Monday, July 07, 2008 2:43 AM

ZBgGVG  <a href="ldcuugvmcbzl.com/.../a>, [url=http://wrgfqjgsvudv.com/]wrgfqjgsvudv[/url], [link=http://gztobpluqmzl.com/]gztobpluqmzl[/link], http://actfxnywhzsj.com/

# Dimitrios said on Monday, July 07, 2008 3:30 AM

Interesting, abet-accredited-on-line.greatlet.com/map.html washington state acceptable accredited universities,  :-]]],

# Demosthenes said on Monday, July 07, 2008 4:04 AM

excellent resource, virgins-getting-bange.grouptry.com/map.html virgins list,  mhea,

# Dimitrios said on Monday, July 07, 2008 4:32 AM

Hi, hot-18-virgins-girls.grouptry.com/map.html www little virgins com,  %-[[[,

# Dimitri said on Monday, July 07, 2008 7:07 AM

Great site, my-precious-virgins-annie.grouptry.com/map.html gay men sucking free movie clips,  jtudzp,

# Raju said on Monday, July 07, 2008 7:54 AM

But where the function

PasswordDeriveBytes(Password, Salt); 's

code?

# Demosthenes said on Monday, July 07, 2008 8:10 AM

Great site, accredited-on-line-schools-phd.greatlet.com/map.html accredited radiation therapy program,  32053,

# Dimitri said on Monday, July 07, 2008 9:34 AM

jnq8FG Interesting, shadow-of-the-colossus-soundtrack.greatlet.com/map.html young einstein soundtrack,  142778,

# Dimitrios said on Tuesday, July 08, 2008 12:21 AM

excellent resource, michaelcano.2222mb.com/.../map.html dell inspiron 1501 free shipping coupon code,  633,

# Dimitri said on Tuesday, July 08, 2008 1:26 AM

excellent resource, nick-avatar-forum.greatlet.com/map.html avatar creation,  912,

# Dimitri said on Tuesday, July 08, 2008 1:59 AM

Regards and best wishes, jennifergreen.247ihost.com/.../map.html download song from filem hindustan mann,  148078,

# nicole kidman said on Tuesday, July 08, 2008 5:30 AM

nicole-kidman-baby.afewmore.com nicole kidman baby

# nicole kidman said on Tuesday, July 08, 2008 7:12 AM

paralegall.extra.hu/nicoleki37 nicole kidman baby

# nicole kidman said on Tuesday, July 08, 2008 7:46 AM

paralegall.extra.hu/nicoleki37 nicole kidman baby photos

# horse racing said on Tuesday, July 08, 2008 12:14 PM

http://scooter.0me.com/newf sports horse racing

# hurricane bertha said on Tuesday, July 08, 2008 5:39 PM

paralegall.extra.hu/hurricana4 hurricane bertha 2008

# Dighenis said on Wednesday, July 09, 2008 2:58 AM

Interesting, tinsit.bigheadhosting.net/cynthiaab9 biography on alex rodriguez life,  33792,

# Dighenis said on Wednesday, July 09, 2008 4:14 AM

Interesting, tinsit.bigheadhosting.net/cynthiaab9 alex rodriguez demands,  =-DD,

# Demosthenes said on Wednesday, July 09, 2008 4:56 AM

Hi, puss.freehostia.com/ebaystoc30 boeing stock prices,  905,

# Demosthenes said on Wednesday, July 09, 2008 8:57 AM

Nice article…, christopherdarby.hostevo.com/.../index.html download code lyoko songs,  :-O,

# Dimitrios said on Wednesday, July 09, 2008 4:39 PM

Interesting, christophercook.servik.com/.../index.html asian *** black ***,  wubui,

# Dimitrios said on Wednesday, July 09, 2008 8:40 PM

Interesting, christopherdarby.hostevo.com/.../index.html how do i download songs for guitar hero 3,  770782,

# Demosthenes said on Thursday, July 10, 2008 2:39 AM

excellent resource, lesbifoto.extra.hu/.../index.html free hentai central,  380,

# Dimitri said on Thursday, July 10, 2008 9:44 AM

Great site, paralegall.extra.hu/.../index.html *** porn movie,  5274,

# underage cartoon grannys hentai said on Thursday, July 10, 2008 2:54 PM

www.velovert.com/redirect.php cartoon porn

# Dighenis said on Thursday, July 10, 2008 5:17 PM

Hi, puss.freehostia.com/.../index.html nickname of alex rodriguez,  734,

# Dimitri said on Thursday, July 10, 2008 7:33 PM

Nice article…, tinsit.bigheadhosting.net/.../index.html hentai girl turns into monster,  7278,

# Demosthenes said on Thursday, July 10, 2008 8:17 PM

Regards and best wishes, tinsit.bigheadhosting.net/.../index.html star wars xxx hentai,  638118,

# Rhigas said on Friday, July 11, 2008 7:18 AM

I glad too see this interest site, I tell my friends about it! They like sites like that: site

# Dimitrios said on Friday, July 11, 2008 2:05 PM

Interesting, hancock-park-remax.lessgood.com/vanessa-hancock-marriage.html vanessa hancock marriage,  hzf,

# zgbwzlzi said on Friday, July 11, 2008 8:57 PM

H8gotk  <a href="glxnkbdmussa.com/.../a>, [url=http://gawkyxqrawea.com/]gawkyxqrawea[/url], [link=http://znsidfrcezvm.com/]znsidfrcezvm[/link], http://jltwxirzqadn.com/

# Demosthenes said on Saturday, July 12, 2008 10:20 AM

Great site,