ホームページ >バックエンド開発 >PHPチュートリアル >PHP中国語の暗号化と復号化コードを教えてください
暗号化 PHP
文字列を暗号化および復号化する方法? ビット演算が得意であれば難しくありません
よく使われる漢字のUnicodeは4e00-9fbfで、utf-8表現は3バイトです
そしてそのバイナリビット構造は 1110xxxx 10yyyyyy 10zzzzzz である必要があります
ご覧のとおり、各バイトの上位ビットは固定されており、エンコード中に削除できます (デコード時に埋めるだけです)
削除後は 6 ビットのみが残ります (2^6=64) ) せいぜい可視文字を1つずつ使うだけです。マッピングはbase64と変わりません
マッピングテーブル(パスワードテーブルに相当)を自分で作り、他のビット操作と組み合わせれば暗号化・復号化が完了します
シフト、XOR などの演算)、さらに多くの変更があります
しかし、問題があります: 漢字 (稀な文字) は 4e00-9fbf を超える可能性があります。漢字 utf-8 のこの部分は 4 バイトである可能性があります。しかし、その痕跡はあります。この部分は自分で理解できます
ビット演算を知るのが難しくなければ
一般的に使用される漢字の Unicode は 4e00-9fbf であり、utf-8 表現は 3 バイトです
そしてバイナリビット構造は 1110xxxx 10yyyyyy 10zzzzzz でなければなりません
ご覧のとおり、各バイトの上位ビットは固定されており、エンコード中に完全に削除できます (デコード時に埋めるだけです)
削除後は 6 ビットだけが残ります(2^6=64) 可視文字を1つずつマッピングできます
独自のマッピングテーブル(パスワードテーブルに相当)を作成すれば、他のものと組み合わせれば暗号化・復号化が可能です
ビット演算 (シフト、XOR などの可逆演算)、さらに多くの変更が可能です
ただし、漢字 (特殊な文字) は 4e00-9fbf を超える可能性があるという問題があります。漢字のこの部分は utf-8 で 4 になる可能性があります。この部分は自分で把握できます
私のアイデアはUNICODEを取り出してビット操作を行うことですが、それができないのが残念です。 4 文字が 1 つのメタデータを表すことが判明しました。エンコードされた結果は長すぎて不親切なので、別の方法を探しています。 ETAO の URL が私の要件を満たしていることがわかりましたが、実装方法がわかりません。
Aimer http://s.etao.com/cp/sK7Eu2FpbWVy.html
Android 4.3 http://s.etao.com/cp/sLLXvzQuMw.html
Android Nokia http://s.etao.com /cp /sLLXv8W1u_nRxw.html
どうか神様がそれを実現してくださいますように!
Baidu を検索してください。チュートリアルがあります
暗号化は一般に可変長で、base64 が適しています。開発計画を変更しましょう。