コーディングアルゴリズム

1767 ワード

文字セットと文字符号化の関係を整理する文では、一般的な文字セットと文字符号化の関係を紹介し、今回はこの方向に一般的な符号化アルゴリズムを紹介し続けます.
URLコード
URL符号化はブラウザがサーバにデータを送信する際に使用する符号化であり、暗号化アルゴリズムではなく符号化アルゴリズムであり、URL符号化の目的は任意のテキストデータを%接頭辞で表されるテキストに符号化することであり、符号化後のテキストはA~Z,a~z,0~9および-_.*のみを含み、ブラウザやサーバの処理に便利である.<%3Cで表される.皆さんの理解を助けるために、もっと具体的な例を挙げると、1本の完全なURLは"http://www.mukedada.com/login?username=admin&password=123456?remark= "で、そのURLコードはhttp%3A%2F%2Fwww.mukedada.com%2Flogin%3Fusername%3Dadmin%26password%3D123456%3Fremark%3D%E7%AE%A1%E7%90%86%E5%91%98で、私たちは英語のアルファベット、数字以外はすべて%で始まることを発見して、1つの中国語は3バイトで表すため、管理員は9つの%xxで表します.
Base 64符号化
Eメールプロトコルはテキストプロトコルであることを知っています.Eメールにバイナリファイルを追加する場合は、Base 64符号化でバイナリファイルをテキストに変換できます.そうしないと、文字化けしてしまいます.Base 64符号化は、以下に示すように、バイナリデータをテキストで表す符号化アルゴリズムである.
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']

対応するインデックスは、それぞれ0から63までです.Base 64は64種類のテキスト文字しか表示できないため、バイナリデータに対して、バイナリデータをテキストデータに変換するマッピングメカニズムが必要である.すなわち、3バイトを1組に選択して再グループ化する.6ビットごとに新しいバイトになり、4組になる.符号化するバイナリデータが3の倍数でない場合、最後に1バイトか2バイト残ったらどうしますか?Base 64は\x00バイトで末尾を補完した後、符号化の末尾に1つまたは2つの=番号を加えて、何バイトを補完したかを示し、復号すると自動的に削除される.従来の3バイトを4バイト、すなわち長さが33%増加したため、伝送効率が低下し、現在では、Cookie、URLなどの少量のバイナリデータを伝送する一般的な用途にBase 64を適用している.
Javaコードは次のとおりです.
String origin = "    !";
String encoded = java.util.Base64.getEncoder().encodeToString(origin.getBytes());
System.out.println(encoded);

出力結果は57yW56CB5rWL6K+VIQ==で、末尾に2つの=があり、説明は2つの\x00バイトを補充した.