DESデータ暗号化のJavaの簡単な方法

データ伝送ネットワークにおいて、それは暗号化する必要があります

双方は、セキュリティを高めるために、暗号化処理が実行される実際のキー、暗号化と復号化を得るために、変換の特定の規則に従って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( "解密结果:" + 新しい文字列(デコード));
        戻る 新しい文字列(デコード)。
    } 
    
    
    
    
}

おすすめ

転載: www.cnblogs.com/sun-flower1314/p/11940331.html