C#で暗号化

C#で暗号化を行うにはmscorrlib.dll内のSystem.Security.Cryptography名前空間にあるクラスを用いる。
一般的によく使われる方法についてメモ。

パスワードを使った暗号化

  1. PasswordDeriveBytesクラスを使って鍵を生成する
  2. RC2CryptoServiceProviderやDESCryptoServiceProviderなどのSymmetricAlgorithmを継承したクラスをインスタンシエーション
  3. 上記クラスのCreateEncryptorに鍵と初期ベクタを渡してICryptoTransformインターフェイスを取得
  4. ICryptoTransform.TransformBlockとICryptoTransform.TransformFinalBlockを使って暗号化

パスワードを使った復号

  1. PasswordDeriveBytesクラスを使って鍵を生成する
  2. RC2CryptoServiceProviderやDESCryptoServiceProviderなどのSymmetricAlgorithmを継承したクラスをインスタンシエーション
  3. 上記クラスのCreateDecryptorに鍵と初期ベクタを渡してICryptoTransformインターフェイスを取得
  4. ICryptoTransform.TransformBlockとICryptoTransform.TransformFinalBlockを使って復号

ストリームを使いたい場合

  1. ICryptoTransformインターフェイスを取得するところまでは同じ。
  2. System.Security.Cryptography.CryptoStreamを、引数にICryptoTransformインターフェイスを指定してインスタンス
  3. あとはご自由にどうぞ