「Javaの知識アプリケーションの」Java暗号化方式(Base64で)コメント

1.説明

Base64で暗号化:シンプル、高速な暗号化は、一般市民は、暗号化の役割を果たすことができます。プログラマと同じの目には透明。

Base64のシナリオ:(メッセージに適用され、IMGタグは、http暗号化)イメージ・トランスコーディング

2.ケース

インポートjava.util.Base64; 

/ ** 
 * java.utilのパッケージ8でのJavaクラスは、Base64ではBase64では、符号化と復号化に対処しないために使用することができ、カテゴリを追加
 、私は64ビットシステムですので、*オペレーティング・システムとは何の関係も。実際には、印刷するint型4バイトの32ので、int型です。
 FE間- FEFE、81の最初のバイト- - FE間、トレイルバイト40 * GBKは、8ビットの2バイト、全体8140を符号化する範囲を使用します。
 * ASCII 7ビットのコード、最初の7ビット、8番目のビットの0を使用して、それが整数に変換される8ビットGBKをコードしながら、常に正である、すなわち、最初の8バイト1であってもよいです、このような補完8番目のビットとして格納するバイトに10101101、および変換が、バイト値10101101として符号ビットは、もちろん、値は、負である:-83。
 * GBKコード「HO」語である:BA CE(1011 1010 1100 1110 )、 8ビット、バイト1の最初の2つのバイトは、最高のビット符号を有すると理解されます。この値は、-70および-50になります。
 * / 
パブリック クラスMyBase64 {
     公共 静的 ボイドメイン(文字列[]引数){
         試み{ 
            Base64.Decoderデコーダ = Base64.getDecoder()。
            Base64.Encoderエンコーダ = Base64.getEncoder()。
            文字列のテキスト =「通」バイト [] textByte = text.getBytes( "GBK" )。
            // 编码 
            ストリングencodedText = encoder.encodeToString(textByte)。
            System.out.println(encodedText)。
            // 解码 
            するSystem.out.println(新しい文字列(decoder.decode(encodedText)、 "GBK" )); 

        } キャッチ(例外e){ 
            e.printStackTrace(); 
        } 
    } 
}

結果:

3.分析の原理

コード表:のJavaソース(プラス「=」構図)。

/ ** 
 *この配列は、整数6ビットポジティブ変換ルックアップテーブルで
 指定されるように、それらの「Base64でアルファベットの」当量に*インデックス値を
 RFC 2045の(およびRFC 4648):「Base64のアルファベット表1」に*。
 * / 
プライベート 静的 最終 CHAR [] toBase64 = {
     'A'、 'B'、 'C'、 'D'、 'E'、 'F'、 'G'、 'H'、 'I'、 'J' 、 'K'、 'L'、 'M'  'N'、 'O'、 'P'、 'Q'、R ''、 'S'、 'T'、 'U'、 'V'、 ' W」、 'X'、 'Y'、 'Z'  ''、 'B'、 'C'、 'D'、 'E'
}。

一例として、単語を「合格」するには:

GBKエンコーディングでバイトコード経由で:1100110110101000。すべての6再分割で、次いで6ビットのバイナリに応じてベース10に変換されます。最後に対応する値を見つけるためにテーブルをコーディングします。特記事項:Base64では、4 * Nビットである必要があります

代わりに「=」を使用するのに十分ではありません。次の表。

図は、明確にプロセスを理解することができます。

ソースを表示は、暗号化と復号化のプロセスを理解することは比較的簡単です。

 

参考:https://blog.csdn.net/u013068377/article/details/78921720

おすすめ

転載: www.cnblogs.com/jssj/p/11985651.html