C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2008/03/17 00:57

System.Security.Cryptography 名前空間


対称暗号化方式

SymmetricAlgorithm クラス
├─□ DES クラス
│  └─□ DESCryptoServiceProvider クラス
├─□ RC2 クラス
│  └─□ RC2CryptoServiceProvider クラス
├─□ Rijndael クラス
│  └─□ RijndaelManaged クラス
├─□ TripleDES クラス
│  └─□ TripleDESCryptoServiceProvider クラス
└─□ Aes クラス
    ├─□ AesCryptoServiceProvider クラス
    └─□ AesManaged クラス

対称暗号化方式では、暗号化と復号化に同じ鍵を使用する。対称暗号化方式は、主にコンテンツデータの暗号化・復号化使用される。そのため、非対称暗号化方式とは異なり、ストリーム (CryptoStream クラス) を使用して暗号化・復号化を行う方式が採用されている。
SymmetricAlgorithm クラスの Mode プロパティには、暗号化に使用するブロック暗号モード (CipherMode 列挙体) を指定することができる。

Aes クラス及びその派生クラスは、.NET Framework 3.5 より追加されたクラス。


非対称暗号化方式

AsymmetricAlgorithm クラス
├─□ DSA クラス
│  └─□ DSACryptoServiceProvider クラス
├─□ RSA クラス
│  └─□ RSACryptoServiceProvider クラス
├─□ ECDiffieHellman クラス
│  └─□ ECDiffieHellmanCng クラス
└─□ ECDsa クラス
    └─□ ECDsaCng クラス

非対称暗号化方式は、暗号化と復号化に異なる鍵を使用する。非対称暗号化方式による暗号化は、主に電子署名に使用される。また、対称暗号化方式による暗号化データの通信を開始する際に、共通鍵を通信相手に渡すためにも使用される。
RSACryptoServiceProvider クラスは暗号化を行う Encrypt メソッドと、復号化を行う Decrypt メソッドを提供しているが、公開鍵での暗号化, 秘密鍵の復号化しか行えず、秘密鍵での暗号化, 公開鍵の復号化は行えない。これは、通常、公開鍵は誰でも入手可能であるため、暗号化通信においては秘密鍵による暗号化が意味を持たないためだと思われる。
電子署名はこの性質を逆手に利用しており、暗号化に秘密鍵を使用する。電子署名を行うには SignData メソッドSignHash メソッドを使用し、電子署名の検証には VerifyData メソッドVerifyHash メソッドを使用する。

ECDiffieHellman クラス及びその派生クラス、ECDsa クラス及びその派生クラスは、.NET Framework 3.5 より追加されたクラス。


ハッシュアルゴリズム

HashAlgorithm クラス

派生クラス多いし、気が向いたら補完。。。


各具象クラスの名前
CryptoServiceProvider 系は、CAPI (Cryptographic Application Programming Interfaces) 実装。
Cng 系は、CNG (Cryptography Next Generation) 実装。
Managed 系は、マネージド実装。