导航:首页 > 文档加密 > 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加密相关的资料

热点内容
android强制系统横屏 浏览:278
怎么提前看未播出的电视剧app 浏览:664
cad转pdf图层 浏览:598
程序员接私活初级 浏览:433
全无油润滑压缩机 浏览:185
代码加密常用方法 浏览:952
安卓手机如何解除已禁用 浏览:396
算法的随机性 浏览:485
高中解压体育游戏 浏览:533
androidstudior丢失 浏览:345
命令行笔记 浏览:738
360目标文件夹访问拒绝 浏览:519
3b编程加工指令 浏览:789
c8051f系列单片机选型手册 浏览:773
南昌php程序员 浏览:513
bcs命令 浏览:447
如何在服务器指向域名 浏览:417
车床编程可以做刀吗 浏览:519
ln命令源码 浏览:793
用粘液做解压手套 浏览:331