des加密和解密
package test; import java.security.Key; import java.security.Security; import javax.crypto.Cipher; /** * DES加密和解密工具,可以對字串進行加密和解密操作 。 * * @author 碼靈 * 2017-10-17 */ public class DesUtils { /** 字串預設鍵值 */ private static String strDefaultKey = "national"; /** 加密工具 */ private Cipher encryptCipher = null; /** 解密工具 */ private Cipher decryptCipher = null; /** * 將byte陣列轉換為表示16進位制值的字串, hexStr2ByteArr(String strIn) 互為可逆的轉換過程 * * @param arrB * 需要轉換的byte陣列 * @return 轉換後的字串 * @throws Exception * 本方法不處理任何異常,所有異常全部丟擲 */ public static String byteArr2HexStr(byte[] arrB) throws Exception { int iLen = arrB.length; // 每個byte用兩個字元才能表示,所以字串的長度是陣列長度的兩倍 StringBuffer sb = new StringBuffer(iLen * 2); for (int i = 0; i < iLen; i++) { int intTmp = arrB[i]; // 把負數轉換為正數 while (intTmp < 0) { intTmp = intTmp + 256; } // 小於0F的數需要在前面補0 if (intTmp < 16) { sb.append("0"); } sb.append(Integer.toString(intTmp, 16)); } return sb.toString(); } /** * 將表示16進位制值的字串轉換為byte陣列, 和public static String byteArr2HexStr(byte[] arrB) * 互為可逆的轉換過程 * * @param strIn * 需要轉換的字串 * @return 轉換後的byte陣列 * @throws Exception * 本方法不處理任何異常,所有異常全部丟擲 * @author <a href="mailto:
[email protected]">LiGuoQing</a> */ public static byte[] hexStr2ByteArr(String strIn) throws Exception { byte[] arrB = strIn.getBytes(); int iLen = arrB.length; // 兩個字元表示一個位元組,所以位元組陣列長度是字串長度除以2 byte[] arrOut = new byte[iLen / 2]; for (int i = 0; i < iLen; i = i + 2) { String strTmp = new String(arrB, i, 2); arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16); } return arrOut; } /** * 預設構造方法,使用預設金鑰 * * @throws Exception */ public DesUtils() throws Exception { this(strDefaultKey); } /** * 指定金鑰構造方法 * * @param strKey * 指定的金鑰 * @throws Exception */ public DesUtils(String strKey) throws Exception { Security.addProvider(new com.sun.crypto.provider.SunJCE()); Key key = getKey(strKey.getBytes()); encryptCipher = Cipher.getInstance("DES"); encryptCipher.init(Cipher.ENCRYPT_MODE, key); decryptCipher = Cipher.getInstance("DES"); decryptCipher.init(Cipher.DECRYPT_MODE, key); } /** * 加密位元組陣列 * * @param arrB * 需加密的位元組陣列 * @return 加密後的位元組陣列 * @throws Exception */ public byte[] encrypt(byte[] arrB) throws Exception { return encryptCipher.doFinal(arrB); } /** * 加密字串 * * @param strIn * 需加密的字串 * @return 加密後的字串 * @throws Exception */ public String encrypt(String strIn) throws Exception { return byteArr2HexStr(encrypt(strIn.getBytes())); } /** * 解密位元組陣列 * * @param arrB * 需解密的位元組陣列 * @return 解密後的位元組陣列 * @throws Exception */ public byte[] decrypt(byte[] arrB) throws Exception { return decryptCipher.doFinal(arrB); } /** * 解密字串 * * @param strIn * 需解密的字串 * @return 解密後的字串 * @throws Exception */ public String decrypt(String strIn) throws Exception { return new String(decrypt(hexStr2ByteArr(strIn))); } /** * 從指定字串生成金鑰,金鑰所需的位元組陣列長度為8位 不足8位時後面補0,超出8位只取前8位 * * @param arrBTmp * 構成該字串的位元組陣列 * @return 生成的金鑰 * @throws java.lang.Exception */ private Key getKey(byte[] arrBTmp) throws Exception { // 建立一個空的8位位元組陣列(預設值為0) byte[] arrB = new byte[8]; // 將原始位元組陣列轉換為8位 for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) { arrB[i] = arrBTmp[i]; } // 生成金鑰 Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES"); return key; } /** * main方法 。 * * @author 碼靈 * @param args */ public static void main(String[] args) { try { String test = "1234221356789"; DesUtils des = new DesUtils("2123231");// 自定義金鑰 System.out.println("加密前的字元:" + test); System.out.println("加密後的字元:" + des.encrypt(test)); System.out.println("解密後的字元:" + des.decrypt(des.encrypt(test))); System.out.println("解密後的字元:" + des.decrypt("084d3fec5438e5690be0c84742e51209")); } catch (Exception e) { e.printStackTrace(); } } }
所需jar包 http://download.csdn.net/download/h4241778/10025549
相關推薦
Java DES 加密和解密源碼
ex18 detail r文件 index nco keyword [] 接口 crypto Java密碼學結構設計遵循兩個原則: 1) 算法的獨立性和可靠性。 2) 實現的獨立性和相互作用性。 算法的獨立性是通過定義密碼服務類來獲得。用戶只需了解密碼算法的概念,而不用
golang實現DES加密和解密
package main import ( "bytes" "crypto/des" "crypto/cipher" "fmt" ) func padding(src []byte,blocksize int) []byte { n:=len(src) pad
[轉]DES加密和解密工具類,可自定義key
import javax.crypto.Cipher; import java.security.Key; import java.security.Security; public class DesUtils { /** * 字串預設鍵
Java工具類——DES加密和解密工具 II
import java.security.Key; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import
C#DES加密和解密
原文地址 using System; using System.IO; using System.Text; using System.Globalization; using System.Collections.Generic; using System.Securi
des加密和解密
package test; import java.security.Key; import java.security.Security; import javax.crypto.Cipher; /** * DES加密和解密工具,可以對字串進行加密和解密操作 。
Java DES 加密和解密原始碼
Java密碼學結構設計遵循兩個原則: 1) 演算法的獨立性和可靠性。 2) 實現的獨立性和相互作用性。 演算法的獨立性是通過定義密碼服務類來獲得。使用者只需瞭解密碼演算法的概念,而不用去關心如何實現這些概念。實現的獨立性和相互作用性通過密碼服務提供器
對稱加密----AES和DES加密、解密
呼叫AES/DES加密演算法包最精要的就是下面兩句話:Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);CBC是工作模式,DES一共有電子密碼本模式(
des對稱加密和解密
1.des對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該對稱密碼,是一種對稱加密演算法。 2. ************** WHDesOperation.h檔案 //
什麽是私有密鑰密碼技術——密鑰加密算法采用同一把密鑰進行加密和解密
解密 網絡安全 位操作 線性復雜 對稱 大量 控制 全局 相位 什麽是私有密鑰密碼技術 私有密鑰(Symmetric Key),又叫對稱密鑰。密鑰加密算法采用同一把密鑰進行加密和解密。它的優點是加密和解密速度非常快,但密鑰的分發和管理比較困難。信息的發送者和接收者必須明確同
關於簡單的加密和解密算法
sss 建議 ace class 算法 dsm length pac data 加密解密 最簡單的就是簡單的字符串連接和運算,可是直接對字符串操作比較麻煩,所以建議一般做法是先把string轉換為byte數組後再進行簡單的異或運算或者其它運算進行加密和解密,終於比對
運維學習之加密和解密
運維 網絡 安全 運維學習之加密與解密: 眾所周知,在網絡的世界裏不存在絕對的安全性。各種釣魚網站,病毒等等危害著我們的網絡環境。所以,作為一個運維人員,在我們利用網絡進行通信時,保證通信的機密性、完整性、可用性是必要的。 我們的日常生活中有以下三點威脅網絡安全的行為: 1.威脅
node加密和解密字符串
string 引入 created require ring 地址 var final 變量 參考地址: http://www.cnblogs.com/laogai/p/4664917.html 第一步:引入模塊 var crypto = require(‘crypto‘)
使用Python進行AES加密和解密
Coding color www tor 修改 1年 add 思想 href 摘錄於:http://blog.csdn.net/nurke/article/details/77267081 另外參考:http://www.cnblogs.com/kaituorensheng
shell整理(38)===凱撒加密和解密
加密 凱撒 實現如下圖所示:[[email protected] shell]# bash zong.sh ==================凱撒加密解密============================== 1)輸入字符串,進行凱撒加密(輸入的字符串只能是字母、數字、空格) 2)已
JavaScript前端和Java後端的AES加密和解密
proto creat eight prop pen 保持 超出範圍 system creator 在實際開發項目中,有些數據在前後端的傳輸過程中需要進行加密,那就需要保證前端和後端的加解密需要統一。這裏給大家簡單演示AES在JavaScript前端和Java後端是如何實現
springcloud-加密和解密
之前 endpoint soft security nload network class 處理器 end Spring Cloud具有一個用於在本地解密屬性值的Environment預處理器。它遵循與Config Server相同的規則,並通過encrypt.*具有相
密碼加密和解密
加密 代碼 cnblogs void logs tint image () com 1.程序設計思路 設置兩個功能,加密和解密,加密時先算ASCII值,然後根據規則改變ASCII值,輸出對應的加密字符串,解密時,同樣算出字符串的ASCII,根據規則改變ASCII值,輸出對應
php和java中的加密和解密
padding 而不是 bsp enc openss 解密 div des算法 -c 遇到的java代碼如下: Cipher cipher=Cipher.getInstance("DESede/CBC/PKCS5Padding"); 在php中使用des算法 始終校驗不
h5棋牌源碼租用Java的MD5加密和解密類
哈希函數 網絡問題 pri rgs update array 重要 和數 下載 理解MD5MD5的應用非常廣泛h5棋牌源碼租用(h5.hxforum.com)聯系170618633533企鵝2952777280(http://yhgj8004.com)源碼出售 房卡出售