1

ライセンス暗号化キーを受け入れるアプリケーションがあります。したがって、このアプリケーションは、string encryptionPassword その文字列を復号化してデータを取得するために内部に保持する必要があります。

アプリケーションの内部を維持するための最良のアプローチはどれですかstring encryptionPassword。ユーザーがそれをハッキングしようとして、それを行うのが非常に難しい場合はどうでしょうか。

どんな手掛かり?

ありがとうございました!!!

public static string Encrypt(string textToEncrypt, string encryptionPassword)
{
            var algorithm = GetAlgorithm(encryptionPassword);

            byte[] encryptedBytes;
            using (ICryptoTransform encryptor = algorithm.CreateEncryptor(algorithm.Key, algorithm.IV))
            {
                byte[] bytesToEncrypt = Encoding.UTF8.GetBytes(textToEncrypt);
                encryptedBytes = InMemoryCrypt(bytesToEncrypt, encryptor);
            }
            return Convert.ToBase64String(encryptedBytes);
}

public static string Decrypt(string encryptedText, string encryptionPassword)
{
            var algorithm = GetAlgorithm(encryptionPassword);

            byte[] descryptedBytes;
            using (ICryptoTransform decryptor = algorithm.CreateDecryptor(algorithm.Key, algorithm.IV))
            {
                byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
                descryptedBytes = InMemoryCrypt(encryptedBytes, decryptor);
            }
            return Encoding.UTF8.GetString(descryptedBytes);
}
4

3 に答える 3

5

SecureString法案に合うかもしれません:

機密を保持する必要があるテキストを表します。テキストは、使用時にプライバシー保護のために暗号化され、不要になったときにコンピュータのメモリから削除されます。

また:

オブジェクトは、テキスト値を持つという点でオブジェクトに似SecureStringています。Stringただし、SecureStringオブジェクトの値は自動的に暗号化され、アプリケーションが読み取り専用としてマークするまで変更でき、アプリケーションまたは.NETFrameworkガベージコレクターのいずれかによってコンピューターのメモリから削除できます。

のインスタンスの値は、SecureStringインスタンスが初期化されるとき、または値が変更されるときに自動的に暗号化されます。アプリケーションは、MakeReadOnlyメソッドを呼び出すことにより、インスタンスを不変にし、それ以上の変更を防ぐことができます。

ただし、十分な数のユーザーがそのようなパスワードを読み取ることができると判断した場合は、時間と労力がかかる可能性がありますが、可能であることに注意してください。

于 2012-12-17T14:54:29.410 に答える
1

ハッキングを防ぐためにキーを保存するための最良の答えは次のとおりです

別の方法については、この記事を参照してください。

ソフトウェアが完全なキーをテストすることはないため、このソリューションは部分キー検証システムと呼ばれます。アプリケーションにはキーのすべての部分をテストするコードが含まれていないため、クラッカーが実行可能コードを分解するだけで有効なキージェネレーターを構築することは不可能です。

このシステムは、亀裂を完全に防ぐ方法ではありません。クラッカーが実行可能ファイルを編集して検証コードを飛び越えることは引き続き可能です。しかし、そのようなクラックは1つの特定のリリースでのみ機能します。そのため、ジョブを正常に完了するのを困難にするためのいくつかのトリックを提案します。

于 2012-12-17T15:21:15.293 に答える
0

SecureStringを使用してみてください。メモリ内の文字列Valueを自動的に暗号化します。

于 2012-12-17T14:55:28.267 に答える