Java實現DES加密解密演算法
import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.io.IOException; import java.security.SecureRandom; /** * DES加密演算法 * Created by lipeng on 2017/6/6. */ public class DesUtil { private final static String DES = "DES"; private final static String ENCODE = "GBK"; private final static String defaultKey = "qkxTskldu"; public static void main(String[] args) throws Exception { String data = "測試ss"; System.out.println(encrypt(data)); System.out.println(decrypt(encrypt(data))); } /** * 使用 預設key 加密 * * @return String * @author lifq * @date 2015-3-17 下午02:46:43 */ public static String encrypt(String data) throws Exception { byte[] bt = encrypt(data.getBytes(ENCODE), defaultKey.getBytes(ENCODE)); String strs = new BASE64Encoder().encode(bt); return strs; } /** * 使用 預設key 解密 * * @return String * @author lifq * @date 2015-3-17 下午02:49:52 */ public static String decrypt(String data) throws IOException, Exception { if (data == null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = decoder.decodeBuffer(data); byte[] bt = decrypt(buf, defaultKey.getBytes(ENCODE)); return new String(bt, ENCODE); } /** * Description 根據鍵值進行加密 * * @param data * @param key * 加密鍵byte陣列 * @return * @throws Exception */ public static String encrypt(String data, String key) throws Exception { byte[] bt = encrypt(data.getBytes(ENCODE), defaultKey.getBytes(ENCODE)); String strs = new BASE64Encoder().encode(bt); return strs; } /** * Description 根據鍵值進行解密 * * @param data * @param key * 加密鍵byte陣列 * @return * @throws IOException * @throws Exception */ public static String decrypt(String data, String key) throws IOException, Exception { if (data == null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = decoder.decodeBuffer(data); byte[] bt = decrypt(buf, key.getBytes(ENCODE)); return new String(bt, ENCODE); } /** * Description 根據鍵值進行加密 * * @param data * @param key * 加密鍵byte陣列 * @return * @throws Exception */ private static byte[] encrypt(byte[] data, byte[] key) throws Exception { // 生成一個可信任的隨機數源 SecureRandom sr = new SecureRandom(); // 從原始金鑰資料建立DESKeySpec物件 DESKeySpec dks = new DESKeySpec(key); // 建立一個金鑰工廠,然後用它把DESKeySpec轉換成SecretKey物件 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher物件實際完成加密操作 Cipher cipher = Cipher.getInstance(DES); // 用金鑰初始化Cipher物件 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); return cipher.doFinal(data); } /** * Description 根據鍵值進行解密 * * @param data * @param key * 加密鍵byte陣列 * @return * @throws Exception */ private static byte[] decrypt(byte[] data, byte[] key) throws Exception { // 生成一個可信任的隨機數源 SecureRandom sr = new SecureRandom(); // 從原始金鑰資料建立DESKeySpec物件 DESKeySpec dks = new DESKeySpec(key); // 建立一個金鑰工廠,然後用它把DESKeySpec轉換成SecretKey物件 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher物件實際完成解密操作 Cipher cipher = Cipher.getInstance(DES); // 用金鑰初始化Cipher物件 cipher.init(Cipher.DECRYPT_MODE, securekey, sr); return cipher.doFinal(data); } }
相關推薦
Java實現DES加密解密演算法
import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFact
DES加密解密演算法C語言程式碼實現
程式碼: 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 /*------------------------ 5 定義列舉型全域性變數 6 -----
網路安全學習之C語言版DES加密解密演算法的程式設計與實現
其實明白了DES演算法的流程程式設計實現是不難的,當然可能會在S盒實現那碰到點問題。下面的DES演算法包括加密和解密兩個功能,主要有生成16個子金鑰和DES演算法的主程式組成。輸出的資訊有16輪子金鑰以及每輪的中間值以及最後的結果。具體的程式碼中都有註釋,就看程式碼吧。關於D
JAVA實現DES加密實現詳解
ava util des算法 直接 print uri ret secure 過程 package util; import java.security.SecureRandom; import javax.crypto.spec.DESKeySpec; import j
條理清晰的入門:使用Java實現RSA加密解密
條理清晰的入門:使用Java實現RSA加密解密 什麼是RSA 使用Java 需要匯入的標頭檔案 生成公鑰、私鑰 進行加密解密 金鑰的儲存 密文的儲存、讀取 什麼是RSA 翻一下以前的密碼
資料的加密傳輸——微控制器上實現TEA加密解密演算法
http://www.eeworld.com.cn/mcu/article_2016121632367.html 各位大俠在做資料傳輸時,有沒有考慮過把資料加密起來進行傳輸,若在串列埠或者無線中把所要傳的資料加密起來,豈不是增加了通訊的安全性。常用的加密解密演算法比如DES、RSA等,受限於微控
C++呼叫openssl實現DES加密解密cbc模式 zeropadding填充方式 pkcs5padding填充方式 pkcs7padding填充方式
============================================== des cbc 加密 zeropadding填充方式 ============================================== //加密 cbc ze
JAVA實現RSA加密解密
RSA 工具類。提供加密,解密,生成金鑰對等方法。 RSA加密原理概述 : RSA的安全性依賴於大數的分解,公鑰和私鑰都是兩個大素數(大於100的十進位制位)的函式。 據猜測,從一個金鑰和密文推斷出明文的難度等同於分解兩個大素數的積 金鑰的產生: 1.選
C#寫Des加密解密演算法
馬上就要實習了,求大大們介紹工作。QQ:1028962069 原始碼地址 http://download.csdn.net/detail/h1028962069/8618367 我只寫關鍵程式碼。 介面如下 類 using System; using System.Col
php和c#一致的DES加密解密演算法類
DES加解密演算法,在C#與PHP中的通用類。 注意: 1、類中的祕鑰key跟向量iv,均用的同樣的值 2、編碼均採用的utf-8 以下為具體程式碼,可以直接複製去進行實際測試 C#版程式碼: using System; using System.Data;
java php DES 加密解密
Java程式碼 import java.io.IOException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import jav
java實現AES加密解密
package com.utils; import org.apache.tomcat.util.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpe
Java 實現 RSA加密解密及數字簽名
RSA公鑰加密演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。 RSA是目
用C#實現DES加密解密封裝
{ byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; byte[] inputByteArray = Convert.
C#DES加密,JavaDES解密,另轉C#和Java實現Des完整代碼
sso output uri sta RM light ash for str C#DES加密,JavaDES解密,另轉C#和Java實現Des完整代碼 轉載 2014年06月17日 17:36:09 標簽: DES / C#DES / JavaDES /
DES加密解密->java實現
DES加密解密涉及到的JAVA類 Cipher 此類為加密和解密提供密碼功能。它構成了 Java Cryptographic Extension (JCE) 框架的核心。 為建立 Cipher 物件,應用程式呼叫 Cipher 的 getInstan
java實現對稱加密AES和DES的加密、解密
目前主流的加密方式有:1、對稱加密:AES、DES 2、非對稱加密:RSA、DSA。 本文主要講解java實現呼叫AES/DES加密演算法包,呼叫過程最精要的就是下面兩句話: Cipher cipher = Cipher.getIn
相容JAVA的PHP加密解密DES演算法
今天一直折騰和JAVA對接資料加密解密的問題。 剛開始使用TEA的加密演算法,但是JAVA那邊和PHP端加密出來的結果不一樣 只能修改演算法,將演算法修改成了DES的加密演算法 但是PHP需要裝一個m
【JAVA】常用加解密演算法總結及JAVA實現【BASE64,MD5,SHA,DES,3DES,AES,RSA】
BASE64 這其實是一種編解碼方法,但是隻要我們能夠將原文變成肉眼不可識別的內容,其實就是一種加密的方法。 BASE64 的編碼都是按字串長度,以每 3 個 8 bit 的字元為一組,然後針對每組,首先獲取每個字元的 ASCII 編碼,然後將 ASCII 編碼轉換成 8
C#DES加密,JavaDES解密,另轉C#和Java實現Des完整程式碼
<span style="font-family: Arial, Helvetica, sans-serif;">今天,由於開發需要C#做DES加密,Java做DES解密,在實現時有這樣一個問題:C#做DES有加密向量IV,Java常見方式是沒有的。在解密時需要