2011-06-23 4 views
0

私は自分自身でライセンスシステムを作りたいと思っています。私は鍵を作るためにさまざまな暗号化アルゴリズムを検討しています。暗号化プログラムでデコードできるアルゴリズムC#

私の最初のステップは、例えばのでbase64_encode 3別の文字列にある:

Name-Expiry-NumberPcsはになります - >TmFtZS1FeHBpcnktTnVtYmVyUGNz

しかし、私は何か他のものにそれを暗号化したいと思うが、それはすべての中に復号する必要がありますプログラムは情報を提供することができる。

もう一つ考慮すべきことは、オンラインシステムから顧客に提供するためにPHPを使用してキーをエンコードし、C#プログラムにキーを入力できることです。

どのような考えですか?

+0

ハッシュではなくecnryptionが必要 – sehe

答えて

0

ハッシングは一方向の操作です。ハッシュ値をデコードできません。あなたはおそらく、ここで何をしたいのか

はハッシュを確認次のとおりです。あなたのプログラムは、「ライブ」のパラメータ値を使用して、クライアントのシステム上で実行されたときに、ブランドの新しいハッシュを作成し、生成したハッシュは1あなたに等しいことを確認しますクライアントにキーとして与えています。

これは、プログラムがクライアントで実行されているときに確実に検出できない情報をハッシュに含めることができないことを意味します。残念ながら、「有効期限」および「PCの数」はこのカテゴリに該当します。

このような情報を確認する必要がある場合は、ハッシュが適切でないため、代わりにを暗号化する必要があります。暗号化には対称型と非対称型という2つの味があります。

対称暗号化は、検証コードを解読できるように秘密鍵をアプリケーションに知らせなければならないことを意味します。したがって、そのようなことがどのように機能するかについての適度な知識を持つ人なら、必要な検証コード。

非対称暗号化では、(暗号化するための)秘密鍵と復号化するための公開鍵があります。誰もがこの公開鍵を利用できるようにしても問題はありません。このアプローチでは、プログラムの鍵となることはできません。

もちろん、コード検証を完全にスキップするように管理対象アプリケーションのコードを変更するのは本当に簡単なので、あなたのアプリがクラッキングから安全であることを意味するわけではありません。

あなたが質問した質問は、実際にはワームの缶であり、決定的な回答はありません。あなたはこの質問を見てみたいかもしれません:https://stackoverflow.com/questions/5132943/licensing-system-for-netと同様の質問へのリンクの何十もここに従ってください。

+0

これは参考になり、助けになりました。ハッシュと暗号化の間に混乱しました。したがって、私はC#が暗号化に関して提供しなければならないものを見ていきます。 –

0

ハッシュは片方向であるため、ハッシュは必要ありません。あなたはある種の暗号化が必要です。また、非対称暗号を使用しない限り、ユーザーがアクセスできる場所に鍵を置くため、暗号化は効果的に難読化されます。

まず、UTF8で文字列をエンコードしてバイト配列を取得します。次に、別のバイト配列を与えるAESでその配列を暗号化します。最後に、Base64を使用して暗号化されたデータをエンコードし、人間が読める文字列を取得します。

しかし、鍵をクライアントに埋め込む必要があるので、適度に能力のあるクラッカーは、プログラムの鍵となる鍵を書くことができます。

非対称暗号を使用すると、埋め込みキーの問題を回避できます。しかし、それは本当に長いライセンスキーにつながります。それは鍵を防ぎますが、ひび割れは防ぎません。

ライセンス用に第三者のソフトウェアを使用することをおすすめします。または、あなたのソフトウェアがそれほど面白くない限り誰も気にしない限り、ひびが入ってしまうので、完全に放置してください。

0

私はSHA256をC#で実装しました(System.Security.Cryptographyを参照)。しかし、私はハッシュが解読可能であるとは思わない。その目的は、(パスワードのような)機密性のあるものをハッシュし、同じハッシュルーチンを別の値に適用し、2つのハッシュを比較することです。

あなたは暗号化アルゴリズム(たとえばAES)を探しているようです。これはSystem.Security.Cryptographyでも利用可能ですが、他の多くのアルゴリズムもあります。

0

標準の暗号化に準拠したセキュリティアルゴリズムの膨大なライブラリが用意されています。 System.Security.Cryptographyのドキュメントをチェックし、最適なアルゴリズムを選択してください。

Convertクラスには、文字列をtofrom Base64に変換する静的メソッドがあります。したがって、ここでも.NETの問題はありません。

あなたはかなりうまくカバーしていると思います。あなたが気に入っているものを選ぶようにしてください。また、ハッシュアルゴリズムを選択すると、出力を「解き放つ」ことができず、比較するだけで済みます。

0

"ハッシュ"は、定義に従って、いくつか総当たりのハッキングは可能ですが、デコードできません。

コードをデコードする必要がある場合は、2ウェイアルゴリズム(AESまたはDESなど)を使用する必要があります。

実際にデコードする必要はなく、格納されたハッシュがユーザーの入力と一致するかどうかを確認するだけで、格納されているハッシュと同じアルゴリズムを使用してユーザー入力をエンコードし、

関連する問題