最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java簡單數(shù)據(jù)加密方法DES實現(xiàn)過程解析

 更新時間:2019年12月24日 10:42:06   作者:sun_flower火柴客  
這篇文章主要介紹了Java簡單數(shù)據(jù)加密方法DES實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了Java簡單數(shù)據(jù)加密方法DES實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1.數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時,需要進行加密處理

雙方約定一個相同的key(key不在網(wǎng)絡(luò)中進行傳輸,只傳輸加密數(shù)據(jù)),然后根據(jù)將key根據(jù)一定的DES規(guī)則轉(zhuǎn)換,得到真正的key,在進行加密和解密,為了增加安全性,加密過程中再加上編碼base64轉(zhuǎn)換,解密時先解碼base64

加密和解密的完整的代碼:

package com.cmit.hall.plat.play.utils;

import java.security.GeneralSecurityException;
import java.security.Key;
import java.util.Base64;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;

/** 
 * 數(shù)據(jù)加密 DES方式 + Base64
 * @author sun_flower
 *
 */
public class EncryUtils {
  public static final String KEY = "gEpCIKFVdPEBJ1pM5pLSviM2Nrj5C/A4iAw8ou+jiJpnrXigolapdcJXfmh2tECyuQnaFrvZHabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn";
  /**
   * 測試
   * @param args
   * @throws Exception
   */
  public static void main(String[] args) throws Exception {
    Key convertSecretKey = generateSecret(KEY);
    String data = "{\"code\":\"100\",\"roleId\":[],\"userDesc\":\"測試\",\"sessionId\":\"90EA80C89F6187BAB363C9347F759E39\",\"roleList\":[],\"userName\":\"chenpeng\",\"checkCode\":\"\",\"token\":\"\",\"password\":\"eFEBcXRwTW2oMFSDwGwUKQ==\",\"createTime\":\"2019-05-27 15:30:14\",\"levelId\":\"1\",\"staffName\":\"\",\"id\":1502,\"userType\":\"1\",\"oldPwd\":\"\"}";
    String enStr = encodeString(convertSecretKey, data);
    decodeString(convertSecretKey, enStr);
  }
  /**
   * 轉(zhuǎn)換key
   * @param key
   * @return
   * @throws GeneralSecurityException
   */
  public static Key generateSecret(String key) throws GeneralSecurityException {
    byte[] bytesKey = key.getBytes();
    DESKeySpec desKeySpec = new DESKeySpec(bytesKey);//實例化DESKey秘鑰的相關(guān)內(nèi)容
    SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");//實例一個秘鑰工廠,指定加密方式
    Key convertSecretKey = factory.generateSecret(desKeySpec);
    return convertSecretKey;
  }
  /**
   * 加密
   * @param convertSecretKey
   * @param date
   * @return
   * @throws GeneralSecurityException
   */
  public static String encodeString(Key convertSecretKey, String data) throws GeneralSecurityException {
    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");//通過Cipher這個類進行加解密相關(guān)操作
    cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey);
    byte[] enData = Base64.getEncoder().encode(data.getBytes());
    byte[] result = cipher.doFinal(enData);//輸入要加密的內(nèi)容
    System.out.println("加密的結(jié)果:" + Hex.encodeHexString(result));
    return Hex.encodeHexString(result);
    
  }
  
  /**
   * 解密
   * @param convertSecretKey
   * @param date
   * @return
   * @throws GeneralSecurityException
   * @throws DecoderException 
   */
  public static String decodeString(Key convertSecretKey, String data) throws GeneralSecurityException, DecoderException {
    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");//通過Cipher這個類進行加解密相關(guān)操作
    cipher.init(Cipher.DECRYPT_MODE, convertSecretKey);
    byte[] hdata = Hex.decodeHex(data.toCharArray());
    byte[] result = cipher.doFinal(hdata);
    byte[] decode = Base64.getDecoder().decode(result);
    System.out.println("解密結(jié)果:" + new String(decode));
    return new String(decode);
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis深入解讀動態(tài)SQL的實現(xiàn)

    MyBatis深入解讀動態(tài)SQL的實現(xiàn)

    動態(tài) SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài) SQL,可以徹底擺脫這種痛苦
    2022-04-04
  • Java Swing JFrame窗口的實現(xiàn)

    Java Swing JFrame窗口的實現(xiàn)

    這篇文章主要介紹了Java Swing JFrame窗口的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 使用jpa的實體對象轉(zhuǎn)json符串時懶加載的問題及解決

    使用jpa的實體對象轉(zhuǎn)json符串時懶加載的問題及解決

    這篇文章主要介紹了使用jpa的實體對象轉(zhuǎn)json符串時懶加載的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java開發(fā)實現(xiàn)猜拳游戲

    Java開發(fā)實現(xiàn)猜拳游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • struts2入門(搭建環(huán)境、配置、示例)詳解

    struts2入門(搭建環(huán)境、配置、示例)詳解

    這篇文章主要介紹了struts2入門(搭建環(huán)境、配置、示例)詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java如何實現(xiàn)壓縮文件與解壓縮zip文件

    Java如何實現(xiàn)壓縮文件與解壓縮zip文件

    這篇文章主要介紹了Java如何實現(xiàn)壓縮文件與解壓縮zip文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • springsecurity實現(xiàn)攔截器的使用示例

    springsecurity實現(xiàn)攔截器的使用示例

    Spring Security 可以替代攔截器,同時還可以提供更加細(xì)粒度的權(quán)限控制和身份認(rèn)證,本文就來介紹一下springsecurity實現(xiàn)攔截器的使用示例,感興趣的可以了解一下
    2023-10-10
  • Spring?Boot集成RabbitMQ以及隊列模式操作

    Spring?Boot集成RabbitMQ以及隊列模式操作

    RabbitMQ是實現(xiàn)AMQP(高級消息隊列協(xié)議)的消息中間件的一種,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot集成RabbitMQ以及隊列模式操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java系統(tǒng)環(huán)境變量配置全過程

    Java系統(tǒng)環(huán)境變量配置全過程

    本文介紹了如何配置Windows系統(tǒng)中的PATH和CLASSPATH環(huán)境變量,以及如何使用這些變量來運行Java程序,步驟包括查看系統(tǒng)屬性、編輯環(huán)境變量、添加路徑、驗證設(shè)置等,通過這些步驟,用戶可以永久性地保存PATH和CLASSPATH環(huán)境變量的設(shè)置,從而方便地運行Java程序
    2024-11-11
  • SpringBoot之@Value獲取application.properties配置無效的解決

    SpringBoot之@Value獲取application.properties配置無效的解決

    這篇文章主要介紹了SpringBoot之@Value獲取application.properties配置無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

松江区| 尤溪县| 康保县| 吉首市| 菏泽市| 罗甸县| 嵩明县| 台山市| 广灵县| 建始县| 化隆| 蒙城县| 利辛县| 台州市| 龙山县| 北安市| 五常市| 南召县| 东源县| 淮滨县| 长治县| 绥阳县| 台山市| 霸州市| 南投市| 乡城县| 平阳县| 宁河县| 乌恰县| 崇左市| 乐安县| 阳原县| 南靖县| 临桂县| 临江市| 文昌市| 怀安县| 灌云县| 三河市| 怀集县| 汤阴县|