-4

Android アプリで見つけた秘密のコードを使って参加できるコンテストがあります。アプリを購入した人のみがコンテストに参加できるようにするために選択した方法は、HMAC SHA256 でエンコード (暗号化?) された共有シークレットを使用することです。

したがって、私の秘密は Android アプリの C で暗号化されます (Crypto++ を使用して、より良い SHA ライブラリの提案はありますか? Crypto++ は本当に使いにくいと思います)。

これはほんの一例です:

Unencrypted shared secret = "my shared secret"  
Unencrypted secret code   = "abcdef"  
Encrypted shared secret   = "dsgdfgdfgdfgfdgf"   
Encrypted shared secret   = "ddffgdgdf"

したがって、ユーザーがシークレット コードを発見すると、Web ページ (Python スクリプト) に移動し、HMAC で暗号化された共有シークレットが CGI パラメーターとして渡されます。

http://mysite/competition.py?encodedSecret=3dfdfdg343jkfjk390kl

次に、私の python スクリプトは CGI パラメーターを調べて解読し、共有シークレット (アプリを持っているユーザーからのコンテスト エントリであることを確認するため) とシークレット コード (ユーザーが何かを獲得したかどうかを確認するため) を取得します。

私の質問は: Python スクリプト (hashlib モジュールを使用) が、Crypto++ を使用して C で暗号化されたものを復号化することは可能ですか?

4

1 に答える 1

0

そのようにハッシュを使用する場合、通常はシークレット コード (平文) と、シークレット コードと共有シークレットの両方のハッシュを Web サイトに渡します。その後、Web サイトは同じハッシュを実行し (共有シークレットを知っているため)、結果が同じであることを確認できます。

サーバー上のハッシュを「クラック」するのは多くの追加作業であり、セキュリティがどのように追加されるのかわかりません。

コードをプレーンテキストで送信してはならない場合は、対称暗号化アルゴリズム (たとえばAES ) で共有シークレットをキーとして使用する方がはるかに効率的です。

于 2011-08-17T00:59:41.623 に答える