2009-08-30 16 views
-1

私はハードディスク、マザーボードetc.のserail番号を暗号化したいのですが、暗号化のための良い数学的方程式をお勧めしますか?暗号化のためのC#コード

+4

暗号化は、特定の脅威に対する特定の脆弱性を緩和するために設計されたセキュリティツールです。暗号化は、それを「より安全に」するために振りかける魔法のダストではありません。暗号化を使用してセキュリティの問題を解決することを検討する前に、まず保護するリソース、脆弱性、脅威の種類、攻撃者の種類などを詳細に記述した詳細な脅威モデルを作成してください。暗号化が有用なツールであるかどうかを判断し、そうであれば、どのような種類の暗号化を使用すべきかを把握しなければなりません。 –

答えて

0

あなたがC#のを言及として、私は、.NETフレームワークCryptography namespaceを見てお勧めします。

独自に実装するアルゴリズムではなく、ここで提供されているアルゴリズムの1つを使用してください。あなたが前にそれを行っていない場合

また、この前の質問にBest way to encrypt short strings in .NET

9

を参照暗号化を含む一般的な経験則は、あなたはそれが間違ってやろうとしている、です。暗号化が重要な場合は、他の人のパッケージ(バックドアを導入しないようにするためにソースがあることが望ましい)を使用します。なぜなら、バグを解消するためです。いくつかの一般的な式と実装については、CryptoのSchneier's bookを参照してください。

しかし、暗号化を使用したいだけで実装するのが難しい場合(たとえそれが本のコードをコピーするだけであっても)、他の人が言及している暗号化名前空間をチェックアウトしてください。

+0

これは良いアドバイスです。 –

+0

同上!素晴らしい答え! – TrueWill

0

何を使用したいかによって異なります。 System.Security.Cryptography名前空間にはたくさんのアルゴリズムが実装されています。

データを暗号化して他のマシンに送信して復号化する場合は、非対称暗号化が最適です。 RSA

データをエンコードして比較しても問題はありませんが、デコードしない場合は、SHA-1などのハッシュを使用するのが最善の方法です。

あなただけの文字列をマスクしたい場合、あなたははっきりいくつかの定義済みの定数を各文字をXORして、非常に同じプロセスを行うことによってデコードすることができます。

private static string key = "MySecretKey"; 
private static byte[] keyData = Encoding.ASCII.GetBytes(key); 

public static byte[] Encrypt(byte[] source) 
{ 
    byte[] target = new byte[source.Length]; 

    for (int i = 0; i < target.Length; i++) 
     target[i] = (byte)(source[i]^keyData[i % keyData.Length]); 

    return target; 
} 
0

BouncyCastle C#版はまたあなたにいくつかの興味深い機能を提供するかもしれません.NET暗号化を超えて