Game Development Reference
who would discover flaws. Experts were hired to implement the algorithms pro-
vided in the .NET Class Framework, and it is advisable to use their implementa-
tions because they more than likely have a better understanding of encryption
than you do.
This chapter covers the encryption ciphers available in the .NET Class Framework,
how to implement encryption properly, and common pitfalls and issues when
securing data with encryption.
Encryption is a complex subject, and it is impossible to cover all aspects in a single
chapter. While still quite ambitious, in this chapter, I will attempt to summarize the
common characteristics of encryption and present a solution that takes care of the
majority of the underlying mechanisms and theory behind encryption. This chap-
ter will only cover the usage of algorithm implementations currently provided by
the .NET Class Framework, and not how to implement the algorithms yourself.
To fully understand this chapter and encryption in general, we must define a few
common characteristics and terms.
This type of encryption is commonly referred to as asymmetric encryption and
uses a public and private key pair to perform encryption or decryption of data.
The public key is available to everyone and is used to encrypt data that will be
decrypted by the owner of the private key. The private key is kept secure by the
owner and is used to decrypt data that has been encrypted with the public key.
Asymmetric encryption is generally only efficient on relatively small sets of data.
The .NET Class Framework contains two asymmetric encryption algorithms:
Digital Signature Algorithm (DSA) and RSA.
This type of encryption is commonly referred to as symmetric encryption and uses
a single key to perform encryption or decryption of data. The private key must be
kept safe from anyone other than the owner of the data.
Symmetric encryption is generally fast and can operate on large sets of data. The
.NET Class Framework contains four symmetric encryption algorithms: DES, Triple
DES, RC2, and Rijndael.