ホームページ >バックエンド開発 >PHPチュートリアル >PHPのソースコードを暗号化するにはどうすればいいですか?
php は現在最も人気のある Web プログラミング言語です。ただし、PHP は解釈して実行されるため、ソース コードがプログラムであり、商用化 (またはその他の目的) には暗号化が必須です。このシリーズでは、中国で一般的に使用されている PHP 暗号化方式をいくつか紹介し、分析します。
#php ソース コードを暗号化する方法:
php ソース コードを暗号化する方法:
1. PHP 拡張機能を使用しない暗号化
このタイプの暗号化の代表的なものには、Weidun PHP 暗号化エキスパート、PHP オンライン暗号化プラットフォーム、PHP Aegis などが含まれます。 このタイプの暗号化は、コアとして eval 関数を使用し、暗号化の目的を達成するためにさまざまな文字列難読化やさまざまなトリックによって補完されます (より正確には、混乱と見なす必要があります)。以下では、このタイプの暗号化の一般的なプロセスを説明するために、単純な hello world を例として取り上げます。<?php echo "hello world";
まず、このコードを eval<?php
eval('echo "hello world";');
<?php eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));これで、最初の暗号化された PHP コードが焼きたてになりました。 。 。 上記の例は非常に単純で、PHP やその他の言語の基本的な知識があれば、基本的に誰でも簡単に理解して復号化できます。したがって、この暗号化を少なくとも単純に見せないようにする何らかの方法が必要です。
2. 複数のエンコード関数を同時に使用する
先ほど述べた Base64 に加えて、PHP には、urlencode、 gzcompressなどこれらの関数を混合すると、復号化の複雑さ (困難さではなく) が増加する可能性があります。さらに、strtr を使用して独自のエンコード ルールを策定することもできます。関数名の代わりに変数を使用する 変数の名前には特定の文字を使用する #ここで説明する特定の文字とは、I と 1、0 と O など、非常によく似た文字です。画面全体が O と 0 で構成される変数で埋め尽くされ、それぞれの名前が 10 文字を超えると想像してください。 。 。ファイル自体が変更されているかどうかを判断する
この機能は簡単そうに思えます。ファイルの概要を作成し、それを比較して変更されているかどうかを確認します。しかし、ファイルに概要を埋め込むにはどうすればよいでしょうか?完璧な解決策は見つかりませんでしたが、回避策は簡単です。 。 。<?php $code = substr(file_get_contents(__FILE__), 0, -32); $hash = substr(file_get_contents(__FILE__), -32); if(md5($code) !== $hash) { exit('file edited'); } ACBC41F727E00F85BEB3440D751BB4E3もちろん、この検証文字列を別の位置に配置して、クラックの難易度を高めることもできます。これにより、他の人はあなたのプログラムを解読するためにさらに努力する必要があります。 。 。 原理がわかったので、復号化は当然非常に簡単です。一般的に言えば、手順は 3 つだけです: eval を出力 (echo など) に置き換えて、エンコードに従って文字列を復元します。ファイルの規則 復号化が完了していない場合は、最初のステップから続行してくださいもちろん、実際の復号化プロセスはそれほど単純ではありません。たとえば、暗号化中に gzcompress が使用された場合、取得されたデータには何らかのバイナリが含まれます。これらのデータを一般のテキストエディタで開くと文字化けして表示され、保存時に一部のデータが失われます。解決策は非常に単純ですが面倒です。つまり、バイナリ (16 進) モードを使用して開いたり、変更したり、保存したりします。
以上がPHPのソースコードを暗号化するにはどうすればいいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。