ホームページ >バックエンド開発 >PHPチュートリアル >PHP中国語の暗号化と復号化コードを教えてください

PHP中国語の暗号化と復号化コードを教えてください

WBOY
WBOYオリジナル
2016-06-23 14:15:16923ブラウズ

暗号化 PHP

文字列を暗号化および復号化する方法?
BASE64_ENCODE / BASE64_DECODE と似ていますが、暗号化された文字列は短くする必要があり、できれば漢字を表す 3 文字にする必要があります。

public $STRING_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

文字列の順序はカスタマイズできます。

ディスカッションへの返信(解決策)

ビット演算が得意であれば難しくありません
よく使われる漢字の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 が適しています。開発計画を変更しましょう。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。