DESは最近、二重対称暗号化と復号化を行って、ここにそれを記録します。
DES対称暗号化、暗号化は、一緒に保持されなければならない、より伝統的な方法、その暗号化動作、情報の情報伝送及び処理が実行される同じ鍵、送信者と受信者の情報を用いて復号化操作、ありますパスワードは、暗号化アルゴリズムは対称です。
最初の2つの方法:暗号化と復号化。
1 公共 文字列encryptDes(データ文字列は、文字列キー)スロー例外{ 2 3。 // 元のキーデータを使用してはDESKeySpecオブジェクトを作成し 4。 DESedeKeySpec DKS = 新しい新しいDESedeKeySpec(key.getBytes()); 5 // キーの工場を作成 6。 するSecretKeyFactory = SecretKeyFactory.getInstanceするKeyFactory( "DES" ); 7 // オブジェクトはDESKeySpecのSecretKeyを変換する植物へのキーと 8 キーK = keyFactory.generateSecret(DKS); 9 10 // 初期暗号エンジン・クラス・パラメータは以下の通りであった:アルゴリズム/作業モード/塗りつぶしパターン 11 暗号暗号= Cipher.getInstance( "DES / CBC / PKCS5Padding"変換); 12 // 初期化ベクトル 13は IvParameterSpec IPSは= 新しい新しい IvParameterSpec( "12345678" .getBytesを()); 14 //は暗号の暗号化を初期化する 15 cipher.init(Cipher.ENCRYPT_MODE、K、IPS); 16 //は暗号化して出力を行いますそしてBASE64トランスコードされた暗号化されたバイト配列の後に 17 文字STR = Base64.encodeBase64String(Cipher.doFinal(data.getBytes( "UTF-8" ))); 18は、 リターンSTR; 19 }
1 パブリック 静的文字列decryptDes(Stringデータ、文字列キー)がスロー例外{ 2 3 DESedeKeySpec DKS = 新しいDESedeKeySpec(key.getBytesを())。 4 するSecretKeyFactoryするKeyFactory = SecretKeyFactory.getInstance( "DES" )。 5 鍵k = keyFactory.generateSecret(DKS)。 6 暗号暗号= Cipher.getInstance( "DES / CBC / PKCS5Padding"変換)。 7 IvParameterSpec IPS = 新しい IvParameterSpec( "12345678" .getBytes())。 8 cipher.init(Cipher.DECRYPT_MODE、K、IPS)。 9 バイト []アウト= cipher.doFinal(Base64.decodeBase64(データ));; 10 リターン 新しい文字列(うち、 "UTF-8" ); 11 }
ok,放送完毕。
いくつかの知識:
データ型を満たしました:
NoPadding:APIまたはアルゴリズム自体は、データを処理しません。
PKCS5Padding:
暗号化の前に8バイトのデータ長、Mの残りの部分を法であれば、M> 0、バイト補体8-M、Mの8バイトの値、数バイトの補数の数バイトとの間の差、すなわち、
それは8つの0 8バイトを追加される場合、バイト値は、追加バイトの数です。
復号化された:最後のバイト、mの値を取り、mはデータバイトから尾を削除、である、暗号化前のデータを、残りのオリジナル。
例えば、差が3バイトであり、その後、差を埋めるために11111333の4バイトを埋めること88888888 11114444を充填する違いではありません
ベクターは:
CBC(DESアルゴリズムのみである)モードでは、IV生成は乱数(又は擬似ランダム)メカニズムを使用して、比較的一般的な方法です。
IV作用は、主に、第一の暗号文ブロックを生成するために使用されるので、最終的な暗号文が、差(同じ平文の場合)を生成しないことを
ので、パスワード攻撃より難しく、加えて他の静脈使用しています。最大の利点は、同じであっても平文場合、同じ鍵が異なる暗号文を生成することができるということです。
最後に、私は輝かしいを作成し、離れて流行から、すべての成功、健康を願っています。