データ伝送ネットワークにおいて、それは暗号化する必要があります
双方は、セキュリティを高めるために、暗号化処理が実行される実際のキー、暗号化と復号化を得るために、変換の特定の規則に従ってDES鍵に応じて、同じキー(送信用ではないネットワークでキー、暗号化されたデータのみを送信する)に合意しますBASE64第1の復号を復号する、base64でコード変換と結合
完全なコードの暗号化と復号化:
パッケージcom.cmit.hall.plat.play.utils。 輸入java.security.GeneralSecurityException。 輸入java.security.Key。 輸入java.util.Base64; 輸入javax.crypto.Cipher; 輸入javax.crypto.SecretKeyFactory; 輸入javax.crypto.spec.DESKeySpec; 輸入org.apache.commons.codec.DecoderException。 輸入org.apache.commons.codec.binary.Hex; / ** *数据加密DES方式+ Base64で * @author sun_flower * * / パブリック クラスEncryUtils { パブリック 静的 最終文字列KEY = "gEpCIKFVdPEBJ1pM5pLSviM2Nrj5C / A4iAw8ou + jiJpnrXigolapdcJXfmh2tECyuQnaFrvZHabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn" 。 / ** *测试 * @paramの引数 * @throws 例外 * / パブリック 静的 ボイドメイン(文字列[]引数)をスロー例外{ キーconvertSecretKey = generateSecret(KEY)。 文字列データ= "{\"コード\ ":\" 100 \ "\ "roleId \":[]、\ "userDesc \":\ "测试\"、\ "セッションID \":\ "90EA80C89F6187BAB363C9347F759E39 \"、\" RoleList \ ":[]、\" userNameの\ ":\" chenpeng \ "\ "チェックコード\":\ "\"、\ "\トークン":\ "\"、\ "パスワード\":\" eFEBcXRwTW2oMFSDwGwUKQ == \」、\ "CREATETIME \":\ "2019年5月27日夜03時30分14秒\"、\ "levelId \":\ "1 \"、\ "staffName \":\ "\"、\ "ID \":1502 \ "USERTYPE \":\ "1 \"、\ "OLDPWD \":\ "\"}」。 ストリングenStr = encodeString(convertSecretKey、データ)。 decodeString(convertSecretKey、enStr)。 GenerateSecretキー(文字キー)スローでGeneralSecurityException { バイト [] = bytesKey key.getBytes() はDESKeySpecはDESKeySpec = 新しい新しいはDESKeySpec(bytesKey); // インスタンス化したdesKeyキーコンテンツに関連 するSecretKeyFactory工場= SecretKeyFactory.getInstance( "DES" ) ; // 例秘密鍵植物、指定された暗号化 キーconvertSecretKey = factory.generateSecret(はDESKeySpec); 戻りconvertSecretKey; } / ** *暗号化 * @param convertSecretKey * @paramのDATE * @return * @throws ザでGeneralSecurityException * / パブリック 静的文字列encodeString(convertSecretKeyキー、データ列)がスローでGeneralSecurityExceptionを{ 暗号暗号 = Cipher.getInstance( "DES / ECB / PKCS5Padding"変換); // 暗号により、このクラスに関連する暗号化および解読操作 cipher.init (Cipher.ENCRYPT_MODE、convertSecretKey); バイト [] = enData Base64.getEncoder()エンコード(data.getBytes());. バイト []結果= Cipher.doFinal(enData); //は、暗号化されたコンテンツ入力 のSystem.out .println( "暗号化の結果:" + Hex.encodeHexString(結果)); リターンHex.encodeHexString(結果); } / ** *復号 * @param convertSecretKey * @paramのDATE * @return *は@throws でGeneralSecurityException * @throws DecoderException * / パブリック 静的文字列decodeString(convertSecretKeyキー、データ列)がスローでGeneralSecurityException、DecoderExceptionを{ 暗号暗号 = Cipher.getInstance( "DES / ECB / PKCS5Padding"変換); // 関連操作暗号このクラス復号によって cipher.init(Cipher.DECRYPT_MODE、convertSecretKey)。 バイト [] HDATA = Hex.decodeHex(data.toCharArray())。 バイト []結果= cipher.doFinal(HDATA)。 バイト []デコード= 。Base64.getDecoder()デコード(結果)。 System.out.println( "解密结果:" + 新しい文字列(デコード)); 戻る 新しい文字列(デコード)。 } }