.NETで簡単に暗号化(1) BearCatのモバイルと音楽のある生活

.NETで簡単に暗号化(1)のページです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--年--月--日 トラックバック(-) コメント(-)

.NETで簡単に暗号化(1)

インターネット上のいろんなサイトにユーザ登録していると、ログイン名とパスワードの組み合わせが覚えきれる量ではなくなってきます。
プライベートな環境であればポストイットに書いてモニタに貼っておくのもありですが、剥がれてしまえばアウト。
仕方がないのでメモ帳(紙の)に書いておいて、それをみながらログインするのだけど、これもまた面倒くさい。
いっそのこと、PC上のメモ帳に書いてしまえばコピペできるんだけど、クリアテキストは危険な香りがする。
というわけで、暗号化してみることにしました。

Microsoft .NET Framework には暗号化ライブラリが用意されています。
Microsoftのサイトに『秘密キー暗号方式を使用したデータの暗号化と復元化を行う方法 』というそのまんまの記事を参考にすれば、簡単に暗号化/複合化が可能。
【暗号化:C#】

using System.Security.Cryptography;

/// <summary>
/// 暗号化する。
/// </summary>
/// <param name="toEncrypt">暗号化対象</param>
/// <param name="key">暗号キー</param>
/// <param name="IV">初期化ベクタ</param>
/// <returns>暗号化結果</returns>
public static byte[] Encrypt(byte[] toEncrypt, byte[] key, byte[] IV)
{
    byte[] encrypted = null;
    using (SymmetricAlgorithm sa = new RijndaelManaged())
    {
        ICryptoTransform encryptor = sa.CreateEncryptor(key, IV);
        using (MemoryStream msEncrypt = new MemoryStream())
        {
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
                csEncrypt.FlushFinalBlock();
                encrypted = msEncrypt.ToArray();
            }
        }
    }
    return encrypted;
}


【復号化:C#】

using System.Security.Cryptography;

/// <summary>
/// 復号する。
/// </summary>
/// <param name="encrypted">復号化対象</param>
/// <param name="key">暗号キー</param>
/// <param name="IV">初期化ベクタ</param>
/// <returns>復号化結果</returns>
public static byte[] Decrypt(byte[] encrypted, byte[] key, byte[] IV)
{
    byte[] decrypted = null;
    using (SymmetricAlgorithm sa = new RijndaelManaged())
    {
        ICryptoTransform decryptor = sa.CreateDecryptor(key, IV);
        MemoryStream msDecrypt = new MemoryStream(encrypted);
        CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
        decrypted = new byte[encrypted.Length];
        csDecrypt.Read(decrypted, 0, decrypted.Length);
    }
    return decrypted;
}


暗号アルゴリズムはわからなくても、これだけのコードで暗号化・復号化ができるところはとっても楽です。
ちなみに、上のコードではRijndaelという米国政府の標準暗号化方式を使用しています。
スポンサーサイト

2007年07月14日 トラックバック(0) コメント(0)












管理者にだけ公開する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。