1. 程式人生 > >Java常見幫助類(8)DES加解密

Java常見幫助類(8)DES加解密

/**
 * Created by lenovo on 2016/12/13.
 * DES加解密
 */
public class DESUtils
{
    
    /**
     * DES金鑰
     */
    private static String key = "secray.0n.www";
    
    /**
     * DES加密
     * @param data:需要加密的資料
     * @return
     */
    public static String encryptDES(String data) throws Exception
    {
        String s = null;
        if ( data != null )
        {
            //DES演算法要求有一個可信任的隨機數源
            SecureRandom sr = new SecureRandom();
            //從原始金鑰資料建立DESKeySpec物件
            DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
            //建立一個金鑰工廠,用它將DESKeySpec轉化成SecretKey物件
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey securekey = keyFactory.generateSecret(desKeySpec);
            //Cipher物件實際完成加密操作
            Cipher cipher = Cipher.getInstance("DES");
            //用金鑰初始化Cipher物件
            cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
            //將加密後的資料編碼成字串
            Base64Utils base64Utils = new Base64Utils();
            s = base64Utils.encode(cipher.doFinal(data.getBytes()));
        }
        return s;
    }
    
    /**
     * DES解密
     * @param data:需要解密的資料
     * @return
     * @throws Exception
     */
    public static String decryptDES(String data) throws Exception
    {
        String s = null;
        if ( data != null )
        {
            //DES演算法要求有一個可信任的隨機數源
            SecureRandom sr = new SecureRandom();
            //從原始金鑰資料建立DESKeySpec物件
            DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
            //建立一個金鑰工廠,用它將DESKeySpec轉化成SecretKey物件
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey securekey = keyFactory.generateSecret(desKeySpec);
            //Cipher物件實際完成解密操作
            Cipher cipher = Cipher.getInstance("DES");
            //用金鑰初始化Cipher物件
            cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
            //將加密後的資料解碼再解密
            Base64Utils base64Utils = new Base64Utils();
            byte[] buf = cipher.doFinal(base64Utils.decode(data));
            s = new String(buf);
        }
        return s;
    }
    
    public static void main(String[] args)
    {
        String data = "123";
        //加密
        try
        {
            String str1 = encryptDES(data);
            System.out.println("加密後為:str1=" + str1);
            //解密
            String str2 = decryptDES(str1);
            System.out.println("解密後為:str2=" + str2);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        
    }
}


相關推薦

Java常見幫助8DES解密

/** * Created by lenovo on 2016/12/13. * DES加解密 */ public class DESUtils { /** * DES金鑰 */ private static String

Java常見幫助2字串處理

閒話少說,下面幫組類主要是實現字串判空,字串相等,字串替換,字串填補等十幾個功能,具體看程式碼: /** * 字串處理類 * * */ public class StringUtil { /** * 判斷字串是否為空 * * @param str * @r

Java常見幫助6JSON幫助

大家常用的一個幫組類: /** * Json工具類 * * @author * */ public class JsonUtil { private static Logger logger = Logger.getLogger(JsonUtil.c

二、Java面向對象8_繼承思想——子初始化過程

AR args col color 所有 通過 子類初始化 anim turn 2018-05-01 子類初始化過程 構造器的調用遵循以下的順序: (1):調用基類構造器。這個步驟會不斷地反復遞歸下去,首先是構造這種層次結構的根,然後是下一層導出類,等等,直到最低層

JAVA面向對象8

.get 包括 src 計算 文件內容 簡介 ava final 指定 文件:存儲相關記錄或放在一起的數據的集合。 導入文件需要導入一個包: java.io.*; File創建對象時需要關聯一個字符串: File f=new File("[放入文件

每天五個java相關面試題8--spring篇

ioc 簡單 組件 print 提交數據 常常 spring容器 效果 用戶 首先呢,假設有從事前端開發的大神或者準備從事前端開發的小夥伴無意看到我這篇博客看到這段文字歡迎加我的QQ:【 845415745 】。即將走入社會的菜鳥大學生有關於前端開發的職

Java常見錯誤整理

最新 java虛擬機 home 64位安裝 .cn www. 錯誤 jdk8 image 1、配置完Java環境變量之後,仍然不能使用java命令。 解決方法: 如果是Windows10系統出現此問題,是因為個別Windows10系統不識別“JAVA_HOME”環

Java Web 深入分析8 Servlet工作原理解析

銷毀 深入分析 -s 區別 即將 web listen java web 訪問 Servlet Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,用Java編寫的服務器端程序,主要功能在於交互式地瀏覽和修改數據,生成動

Java常見問題總結

識別 ase ava ces 功能 例如 低版本 ec2 最新 1、配置完Java環境變量之後,仍然不能使用java命令。 解決方法: 如果是Windows10系統出現此問題,是因為個別Windows10系統不識別“JAVA_HOME”環境變量,將path中所有的“%JA

二、Java面向對象8_繼承思想——方法覆蓋

java 方法的參數 行為 print 思想 自由 www. 代碼 nds 2018-05-01 方法覆蓋(重寫) override(覆蓋): 覆蓋解決的問題:當父類的某一個行為(方法)不符合子類具體的特征時,此時父類需要重新定義父類方法,並重寫方法體。 註意:只有

java常用工具—— Map 與 Bean 之間的互相轉換

import net.bytebuddy.implementation.bytecode.Throw; import org.springframework.cglib.beans.BeanMap; import java.beans.PropertyDescriptor; import java.lang

java常用工具—— JSON處理工具

tor ast val simple sta 轉換 local pass password package com.springboot.commons.utils; import com.springboot.commons.scan.JacksonObjectMapp

java常用工具—— 檔案讀取的操作

定義常用的檔案型別 public class FileType { /** * 檔案頭型別 */ public static final String XML_FILE = "text/xml;charset=UTF-8"; public static

java常用工具—— Excel 操作工具

import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io

java常用工具—— 文件讀取的操作

() utf-8 cati 解壓縮 操作 char ringbuf 路徑 except 定義常用的文件類型 public class FileType { /** * 文件頭類型 */ public static final Stri

java常見面試題目

過程 重寫 font ble body 釋放 就會 t對象 使用 在大四實習階段,秋招的時候,面試了很多家公司,總結常見的java面試題目:(答案可以自己百度) 1、你所用oracle的版本號是多少? 2、tomcat修改8080端口號的配置文件是哪個? 3、mybati

java常見面試題目

1、jsp的內建物件。  JSP中一共預先定義了9個這樣的物件,分別為:request、response、session、application、out、pagecontext、config、page、exception 2、session與cookie的作用與區別:   cookie資料存放

Java--容器/集合Collection理解和使用

、陣列和集合的比較 陣列:長度固定,用來存放基本型別的資料 集合:長度不固定,用來存放物件的引用   二、集合類的基本概念 1.java.util包中提供了一些集合類,這些集合類也被稱為容器。 常用的集合有List集合、Set集合、Map集合,他們的關係繼承如下:  

Java學習-常用Scanner

文章目錄 一、基本含義 二、next()和nextLine() 2.1 next() 2.2 nextLine() 三、獲取數字時 四、連續獲取資料 一、基本含義 專案

Java學習-常用String

文章目錄 一、建立 1.1 直接建立 1.2 建構函式建立 1.3 字元陣列轉換 二、長度 2.1 字串.length() 2.2 字串名.length() 三、格式化