導航:首頁 > 文檔加密 > javadesaes加密

javadesaes加密

發布時間:2025-05-02 08:29:18

❶ 如何用java進行3DES加密解密

這里是例子,直接拿來用就可以了。
package com.nnff.des;

import java.security.Security;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

/*字元串 DESede(3DES) 加密
* ECB模式/使用PKCS7方式填充不足位,目前給的密鑰是192位
* 3DES(即Triple DES)是DES向AES過渡的加密演算法(1999年,NIST將3-DES指定為過渡的
* 加密標准),是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加
* 密演算法,其具體實現如下:設Ek()和Dk()代表DES演算法的加密和解密過程,K代表DES演算法使用的
* 密鑰,P代表明文,C代表密表,這樣,
* 3DES加密過程為:C=Ek3(Dk2(Ek1(P)))
* 3DES解密過程為:P=Dk1((EK2(Dk3(C)))
* */
public class ThreeDes {

/**
* @param args在java中調用sun公司提供的3DES加密解密演算法時,需要使
* 用到$JAVA_HOME/jre/lib/目錄下如下的4個jar包:
*jce.jar
*security/US_export_policy.jar
*security/local_policy.jar
*ext/sunjce_provider.jar
*/

private static final String Algorithm = "DESede"; //定義加密演算法,可用 DES,DESede,Blowfish
//keybyte為加密密鑰,長度為24位元組
//src為被加密的數據緩沖區(源)
public static byte[] encryptMode(byte[] keybyte,byte[] src){
try {
//生成密鑰
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
//加密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE, deskey);
return c1.doFinal(src);//在單一方面的加密或解密
} catch (java.security.NoSuchAlgorithmException e1) {
// TODO: handle exception
e1.printStackTrace();
}catch(javax.crypto.NoSuchPaddingException e2){
e2.printStackTrace();
}catch(java.lang.Exception e3){
e3.printStackTrace();
}
return null;
}

//keybyte為加密密鑰,長度為24位元組
//src為加密後的緩沖區
public static byte[] decryptMode(byte[] keybyte,byte[] src){
try {
//生成密鑰
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
//解密
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
// TODO: handle exception
e1.printStackTrace();
}catch(javax.crypto.NoSuchPaddingException e2){
e2.printStackTrace();
}catch(java.lang.Exception e3){
e3.printStackTrace();
}
return null;
}

//轉換成十六進制字元串
public static String byte2Hex(byte[] b){
String hs="";
String stmp="";
for(int n=0; n<b.length; n++){
stmp = (java.lang.Integer.toHexString(b[n]& 0XFF));
if(stmp.length()==1){
hs = hs + "0" + stmp;
}else{
hs = hs + stmp;
}
if(n<b.length-1)hs=hs+":";
}
return hs.toUpperCase();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//添加新安全演算法,如果用JCE就要把它添加進去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58,
(byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51,
(byte)0xCB,
(byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74,
(byte)0x98, 0x30, 0x40, 0x36,
(byte)0xE2
}; //24位元組的密鑰
String szSrc = "This is a 3DES test. 測試";
System.out.println("加密前的字元串:" + szSrc);
byte[] encoded = encryptMode(keyBytes,szSrc.getBytes());
System.out.println("加密後的字元串:" + new String(encoded));

byte[] srcBytes = decryptMode(keyBytes,encoded);
System.out.println("解密後的字元串:" + (new String(srcBytes)));
}
}

❷ java 給定十六位密鑰 如何進行des加密

packagecom.palic.pss.afcs.worldthrough.common.util;

importjavax.crypto.Cipher;
importjavax.crypto.spec.SecretKeySpec;

importrepack.com.thoughtworks.xstream.core.util.Base64Encoder;
/**
*AES加密解密
*@authorEX-CHENQI004
*
*/
publicclassAesUtils{
publicstaticfinalStringcKey="assistant7654321";
/**
*加密--把加密後的byte數組先進行二進制轉16進制在進行base64編碼
*@paramsSrc
*@paramsKey
*@return
*@throwsException
*/
publicstaticStringencrypt(StringsSrc,StringsKey)throwsException{
if(sKey==null){
("ArgumentsKeyisnull.");
}
if(sKey.length()!=16){
(
"ArgumentsKey'lengthisnot16.");
}
byte[]raw=sKey.getBytes("ASCII");
SecretKeySpecskeySpec=newSecretKeySpec(raw,"AES");

Ciphercipher=Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE,skeySpec);

byte[]encrypted=cipher.doFinal(sSrc.getBytes("UTF-8"));
StringtempStr=parseByte2HexStr(encrypted);

Base64Encoderencoder=newBase64Encoder();
returnencoder.encode(tempStr.getBytes("UTF-8"));
}

/**
*解密--先進行base64解碼,在進行16進制轉為2進制然後再解碼
*@paramsSrc
*@paramsKey
*@return
*@throwsException
*/
publicstaticStringdecrypt(StringsSrc,StringsKey)throwsException{

if(sKey==null){
("499");
}
if(sKey.length()!=16){
("498");
}

byte[]raw=sKey.getBytes("ASCII");
SecretKeySpecskeySpec=newSecretKeySpec(raw,"AES");

Ciphercipher=Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE,skeySpec);

Base64Encoderencoder=newBase64Encoder();
byte[]encrypted1=encoder.decode(sSrc);

StringtempStr=newString(encrypted1,"utf-8");
encrypted1=parseHexStr2Byte(tempStr);
byte[]original=cipher.doFinal(encrypted1);
StringoriginalString=newString(original,"utf-8");
returnoriginalString;
}

/**
*將二進制轉換成16進制
*
*@parambuf
*@return
*/
(bytebuf[]){
StringBuffersb=newStringBuffer();
for(inti=0;i<buf.length;i++){
Stringhex=Integer.toHexString(buf[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
sb.append(hex.toUpperCase());
}
returnsb.toString();
}

/**
*將16進制轉換為二進制
*
*@paramhexStr
*@return
*/
publicstaticbyte[]parseHexStr2Byte(StringhexStr){
if(hexStr.length()<1)
returnnull;
byte[]result=newbyte[hexStr.length()/2];
for(inti=0;i<hexStr.length()/2;i++){
inthigh=Integer.parseInt(hexStr.substring(i*2,i*2+1),16);
intlow=Integer.parseInt(hexStr.substring(i*2+1,i*2+2),
16);
result[i]=(byte)(high*16+low);
}
returnresult;
}
publicstaticvoidmain(String[]args)throwsException{
/*
*加密用的Key可以用26個字母和數字組成,最好不要用保留字元,雖然不會錯,至於怎麼裁決,個人看情況而定
*/
StringcKey="assistant7654321";
//需要加密的字串
StringcSrc="123456";
//加密
longlStart=System.currentTimeMillis();
StringenString=encrypt(cSrc,cKey);
System.out.println("加密後的字串是:"+enString);
longlUseTime=System.currentTimeMillis()-lStart;
System.out.println("加密耗時:"+lUseTime+"毫秒");
//解密
lStart=System.currentTimeMillis();
StringDeString=decrypt(enString,cKey);
System.out.println("解密後的字串是:"+DeString);
lUseTime=System.currentTimeMillis()-lStart;
System.out.println("解密耗時:"+lUseTime+"毫秒");
}
}

❸ java編程一個AES加密txt文件的程序,其中AES解密文件的方法出錯,求大神搭救

你是對文件內容加的密,應該和文件類型無關把。如果用的是
AES演算法加的密的話,初始化的時候就會寫到
keygen = KeyGenerator.getInstance("AES");
//生成密鑰
deskey = keygen.generateKey();
//生成Cipher對象,指定其支持的DES演算法
c = Cipher.getInstance("AES");
加密和解密的過程幾乎是一樣的,AES是對稱加密方式,你看看加密和解密方法里的有沒有寫錯的地方。

❹ Java常用到的6個加密技術,先收藏,總會用得到!

Java常用到的6個加密技術包括

  1. Base64編碼

    • 簡介:雖然不是嚴格意義上的加密,但常用於處理數據的不可讀性,增加數據傳輸或存儲時的隱私保護。
  2. 消息摘要演算法

    • 簡介:一種哈希函數,用於確保數據完整性。通過對比數據的哈希值來驗證數據是否被篡改或修改。
  3. 對稱加密

    • 簡介:使用相同的密鑰進行加密和解密,常見的演算法有DES、Triple DES、AES等。
    • 特點:安全性較高,但密鑰分發和管理需注意安全性。
  4. 非對稱加密

    • 簡介:使用公鑰加密,私鑰解密,常見的演算法有RSA和DH。
    • 特點:保證數據傳輸的安全性,適用於密鑰分發等場景。
  5. 代碼混淆加密

    • 簡介:使用工具如WinLicense、VMProtect等對軟體進行混淆加密,用於保護軟體免受反向工程和破解。
    • 特點:提高軟體的安全性,增加破解難度。
  6. 哈希函數

    • 簡介:將任意長度的數據映射為固定長度的哈希值,常用於數據完整性校驗和快速查找。
    • 應用:與消息摘要演算法類似,確保數據的唯一性和完整性。

注意:在實際應用中,開發者應根據具體需求和數據安全級別選擇合適的加密技術,並確保密鑰管理和分發過程的安全性。

❺ 關於加解密、加簽驗簽的那些事

生活中加密技術無處不在,盡管你可能對MD5、SHA、DES、AES、RSA等術語感到陌生,但它們在數據安全中的重要性不言而喻。程序員必備的加解密和加簽驗簽概念,其實並不遙遠,比如在日常娛樂中,繞口令「小癟三A,小赤佬B,唉呀媽呀C,坑爹呀D」也可視為密碼學的簡單應用。

密碼學分為古典密碼和現代密碼兩個階段,古典密碼如古埃及的簡單字元替換和古羅馬的凱撒密碼,雖然基礎但易破解。近代密碼學則起源於軍事通信需求,如無線電通信的加密和破譯推動了密碼學的發展。1949年,香農的《通信理論》將密碼學與資訊理論結合,催生了對稱加密和非對稱加密的現代形式。

對稱加密演算法,如DES、AES,其特點是加密解密使用同一密鑰,效率高但秘鑰管理困難。DES加密是通過搜索密鑰實現,而AES則廣泛應用,其密鑰長度可變,更安全。在Java中,我們可以通過這些演算法進行數據加密和解密。

非對稱加密,如RSA,以公鑰和私鑰區分,公鑰用於加密,私鑰用於解密和簽名。比如銀行和客戶間的交易,通過公鑰加密信息保證只有指定方能解讀,私鑰用於驗證信息的完整性和來源。在RSA中,生成密鑰、加密和解密、加簽驗簽都是開發中常見的操作。

數據摘要演算法,如MD5,是不可逆的,確保信息完整性和真實性。在實際應用中,如數字簽名,通過哈希演算法生成的摘要驗證數據的原始性和來源,如MD5在Java中的實現。

❻ Java 介面數據加密和解密

提供一個基於註解實現介面加密解密工具源碼,旨在方便在軟體項目中對數據進行加密與解密。該工具支持多種加密方式,包括Base64、DES、3DES、AES與RSA,以及MD5加密。

使用方法:只需在需要加密解密的介面上添加相應的註解即可實現功能。

此加密解密組件僅適用於SpringBoot項目。

步驟如下:

1. 從gitee.com/zhao_jian_jun...拉取代碼至本地。

2. 使用meavn的install將項目打包為.jar文件。

3. 將加解密依賴引入至項目中。

4. 在配置文件中說明使用的加密方式的秘鑰。RSA為非對稱加密,需提供兩個秘鑰。變數名如下:

5. 對請求相應結果加密,使用@ZjjEncryptResponse註解並指定加密方式。

6. 前端接收到的為加密後的數據。

7. 對請求參數進行解密,使用@ZjjDecryptRequest註解。

閱讀全文

與javadesaes加密相關的資料

熱點內容
全無油潤滑壓縮機 瀏覽:183
代碼加密常用方法 瀏覽:952
安卓手機如何解除已禁用 瀏覽:396
演算法的隨機性 瀏覽:485
高中解壓體育游戲 瀏覽:533
androidstudior丟失 瀏覽:345
命令行筆記 瀏覽:737
360目標文件夾訪問拒絕 瀏覽:518
3b編程加工指令 瀏覽:789
c8051f系列單片機選型手冊 瀏覽:772
南昌php程序員 瀏覽:511
bcs命令 瀏覽:446
如何在伺服器指向域名 瀏覽:417
車床編程可以做刀嗎 瀏覽:519
ln命令源碼 瀏覽:792
用粘液做解壓手套 瀏覽:331
icloud收信伺服器地址 瀏覽:500
編程思考者 瀏覽:453
壓縮機型號用什麼氟利昂 瀏覽:553
農機空氣壓縮機 瀏覽:666