@ArtjomBが指摘しているように、キーをプログラムに入れないようにして、キーを安全に保ちます。起動時に、許可されたユーザーまたはセキュリティ デバイスがキーを提供する必要があります。
そのように見えないものは、もはや暗号化やセキュリティではなく、ある種の難読化です。難読化 (または「DRM」) は、どれだけの労力を費やすか、それを解読することにどれだけの関心があるかに応じて、役に立たないか、ある程度効果的である可能性があります。新しい攻撃が発生したときに、これを改善するための継続的な予算はどれくらいですか? 予想される攻撃者の巧妙さは?
Apple (一例として) は、ハードウェア、ファームウェア、および OS を非常に厳密に管理しており、常にそれを改善することに専念するチームを持っています。iPhone は通常、新しいリリースから数週間から数か月以内にジェイルブレイクされます。魅力的なターゲットの最良のシナリオを考慮する必要があります。
「えーと、午後に何をまとめれば、足首を噛むのを止めることができますか?」と考えている場合。頭に浮かぶことは何でもします。他のハードコードされた値と XOR します。多分それをビットシフトするか何か。気にする人に対してはあまり役に立ちませんが、最もカジュアルな攻撃者を阻止し、少なくとも時間とお金を無駄にすることはありません.
そこからステップアップして、プラットフォームの組み込みソリューションを見てください。OS アシスタンスは大きな助けになります。特に、WindowsのSLP サービスを見てください。Mac App Store を使用している場合、Mac はライセンス強制を提供します。または、独自のソリューションを持つ eSellerate のような商用ベンダーを見ることもできます。SafeNet にはいくつかの製品があります。もちろん、これらすべてを打ち負かすことができます (そして、通常は打ち負かすことができます)。しかし、彼らはあなたが数日間で開発しようとしているものよりもはるかに強力です.
StackOverflowから得た特定のアプローチは、定義上、役に立たないでしょう。難読化が行われている唯一のことは、その詳細が秘密であることです. 仕組みを知っていれば、それを打ち負かすことができます。それが暗号化との違いです。優れた暗号化は、攻撃者がアルゴリズム全体を知っている場合でも、同じように強力になるように設計されています。そのため、難読化技術は独自のものです。彼らはほとんどそうでなければなりません。つまり、(a) お粗末なものをすぐに作成するか、(b) 多くの時間とお金を費やして少しだけお粗末なものを作成するか、または (c) かなり多くのお金を費やして多少の-これらのことを専門とするベンダーからのまずまずのもの。
(StackOverflow でこの質問をしている場合、自分で良いものを構築する可能性はまったくありません。自分でいくつかのプログラムをクラックしていない場合は、何かを構築して停止する立場にはありません。その他)