导航:首页 > 文档加密 > javaaes加密解密代码

javaaes加密解密代码

发布时间:2025-01-17 12:07:54

1. java实现ase加密解密

这个算法java SDK自带的额 参考代码如下:

/**解密

*@paramcontent待解密内容

*@parampassword解密密钥

*@return

*/

publicstaticbyte[]decrypt(byte[]content,Stringpassword){

try{

KeyGeneratorkgen=KeyGenerator.getInstance("AES");

kgen.init(128,newSecureRandom(password.getBytes()));

SecretKeysecretKey=kgen.generateKey();

byte[]enCodeFormat=secretKey.getEncoded();

SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");

Ciphercipher=Cipher.getInstance("AES");//创建密码器

cipher.init(Cipher.DECRYPT_MODE,key);//初始化

byte[]result=cipher.doFinal(content);

returnresult;//加密

}catch(NoSuchAlgorithmExceptione){

e.printStackTrace();

}catch(NoSuchPaddingExceptione){

e.printStackTrace();

}catch(InvalidKeyExceptione){

e.printStackTrace();

}catch(IllegalBlockSizeExceptione){

e.printStackTrace();

}catch(BadPaddingExceptione){

e.printStackTrace();

}

returnnull;

}



/**

*加密

*

*@paramcontent需要加密的内容

*@parampassword加密密码

*@return

*/

publicstaticbyte[]encrypt(Stringcontent,Stringpassword){

try{

KeyGeneratorkgen=KeyGenerator.getInstance("AES");

kgen.init(128,newSecureRandom(password.getBytes()));

SecretKeysecretKey=kgen.generateKey();

byte[]enCodeFormat=secretKey.getEncoded();

SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");

Ciphercipher=Cipher.getInstance("AES");//创建密码器

byte[]byteContent=content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE,key);//初始化

byte[]result=cipher.doFinal(byteContent);

returnresult;//加密

}catch(NoSuchAlgorithmExceptione){

e.printStackTrace();

}catch(NoSuchPaddingExceptione){

e.printStackTrace();

}catch(InvalidKeyExceptione){

e.printStackTrace();

}catch(UnsupportedEncodingExceptione){

e.printStackTrace();

}catch(IllegalBlockSizeExceptione){

e.printStackTrace();

}catch(BadPaddingExceptione){

e.printStackTrace();

}

returnnull;

}

http://blog.csdn.net/hbcui1984/article/details/5201247
图像界面的话就不说了

2. 如何对java请求的@requestbody前端加密后端解密

为确保前后端数据安全传输,本文将介绍如何在使用Spring Boot项目时,对通过@RequestBody接收的前端数据进行AES加密与后端解密的实现过程。首先,需要在Vue项目中引入`axios`和`crypto-js`两个库,其中`axios`用于发送请求,`crypto-js`用于加密和解密数据。



在Vue项目中创建`secret.js`文件,并编写如下代码:



在发送请求时,前端已准备好加密后的数据,并同时向后端发送请求。注意以下几点:





在后端处理加密数据时,使用`hutool`工具包进行解密。



实验结果显示,前端与后端之间数据交换顺畅,且加密与解密过程准确无误。请尝试使用以下链接快速学习Spring Boot 3.x实战技术:



弟弟快看-教程,程序员编程资料站 | DDKK.COM



此外,推荐以下高质量的学习资源:



3. JAVA使用AES/CBC/PKCS5方式加密的内容,怎样在C#下解密

java和C#只是语言,AES这些是算法,所以和语言没太大关系,
JAVA加密的“1”和c#加密的“1”结果是一样的,解密出来也是一样的。
///<summary>
///AES解密
///</summary>
///<paramname="cipherText">密文字符串</param>
///<returns>返回明文字符串</returns>
publicstaticstringAESDecrypt(stringshowText)
{
byte[]cipherText=Convert.FromBase64String(showText);
SymmetricAlgorithmdes=Rijndael.Create();
des.Key=Encoding.UTF8.GetBytes(Key);
des.IV=_key1;
byte[]decryptBytes=newbyte[cipherText.Length];
using(MemoryStreamms=newMemoryStream(cipherText))
{
using(CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Read))
{
cs.Read(decryptBytes,0,decryptBytes.Length);
cs.Close();
ms.Close();
}
}
returnEncoding.UTF8.GetString(decryptBytes).Replace("","");///将字符串后尾的''去掉
}
}
上文为使用c#进行AES解密,其他的可以自行网络。

4. 请问用java如何对文件进行加密解密

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+"毫秒");
}
}

5. Java带KeyGenerator(密钥生成器)生成AES加密,c++里面AES解密

本文讨论了Java使用密钥生成器(KeyGenerator)创建AES加密和C++中使用AES解密的过程。具体步骤如下:

一、Java端加密流程:

Java端生成AES加密时,首先需要使用KeyGenerator类创建密钥生成器实例。使用指定的算法(如AES)和密钥大小(通常为128位)初始化KeyGenerator。然后,通过调用其generateKey()方法生成密钥。

二、Java端解密流程(示例代码):

在Java端,解密操作通常需要使用预先生成的密钥。解密通常涉及Cipher类,首先实例化Cipher对象,并使用密钥和Cipher对象的指定模式(如Cipher.DECRYPT_MODE)初始化。然后,通过Cipher对象的update()或doFinal()方法对加密数据进行解密。

三、C++端解密流程:

C++能够解密的关键在于正确获取Java端生成的密钥值。这通常涉及通过某种形式的数据交换或接口,确保C++端能够访问到与Java端相同的密钥。在C++中,可以使用特定的AES库(例如CAesLib)来实现解密操作。

四、测试与验证:

通过Java端生成的密钥与C++端进行解密操作,以验证密钥生成和解密过程的有效性。测试结果应显示出成功解密的预期结果,证明了Java和C++之间的密钥交换和解密操作能够顺利进行。

重要说明:确保在C++端正确获取和使用Java端输出的密钥值是成功解密的关键步骤。具体实现可能涉及使用特定的数据交换机制或跨语言通信协议。

6. java编程一个AES加密txt文件的程序,其中AES解密文件的方法出错,求大神搭救

你是对文件内容加的密,应该和文件类型无关把。如果用的是
AES算法加的密的话,初始化的时候就会写到
keygen = KeyGenerator.getInstance("AES");
//生成密钥
deskey = keygen.generateKey();
//生成Cipher对象,指定其支持的DES算法
c = Cipher.getInstance("AES");
加密和解密的过程几乎是一样的,AES是对称加密方式,你看看加密和解密方法里的有没有写错的地方。

7. AES算法加解密:java.security.InvalidKeyException: Illegal key size

在处理AES算法加解密时,遇到了一个“java.security.InvalidKeyException: Illegal key size”的错误,这个错误在本地环境运行没有问题,但推送到线上环境后出现。通过搜索引擎,发现这个问题可能与软件受到美国出口管制有关,超过128位密钥大小时,需要替换“local_policy.jar”和“US_export_policy.jar”两个文件。在本地环境,替换这两个文件后问题得到解决,但在线上环境,问题依旧存在。进一步分析发现,线上环境与本地环境使用的JDK版本不同(本地JDK8 u221,线上JDK8 u101),这可能与JDK版本不一致有关,导致问题重现。查看JDK安装目录下的“security”文件夹,确认了线上和本地JDK文件的不同。尝试解决该问题的方法有:手动替换“local_policy.jar”和“US_export_policy.jar”文件或升级JDK版本。但考虑到线下处理的复杂性,有人建议使用第三方库“BouncyCastle”。虽然使用“BouncyCastle”进行解密尝试,但问题依旧没有解决。进一步的思考中,意识到可能需要通过代码方式改变运行策略来解决这个问题。在Stackoverflow上找到了解决思路,即使用反射修改加密策略,通过代码实现,无需手动替换文件或更新JDK版本。Oracle官方在JDK8 u151 Release Notes中提到,新增了一个控制加密策略的特性,使得在不手动添加包的情况下,可以扩展密钥位数。最后的总结是,保持开发环境、测试环境和线上环境使用的JDK版本一致,可以避免不必要的时间浪费,同时,通过代码方式修改加密策略提供了一种更高效、灵活的解决方案。

阅读全文

与javaaes加密解密代码相关的资料

热点内容
捕捞季节手机指标公式源码 浏览:636
webapi获取当前服务器地址 浏览:864
单片机动能 浏览:413
山西补发退休养老金的具体算法 浏览:963
初级java面试题 浏览:619
程序员跳槽需要先离职吗 浏览:422
北京有php市场吗 浏览:415
linuxnautilus 浏览:551
java获取字母 浏览:997
交取暖费叫什么app 浏览:408
关闭445的cmd命令 浏览:579
python矩阵绘图 浏览:427
命令与征服4破解版下载 浏览:610
k线突破阻力公式源码 浏览:575
linux内核410 浏览:891
疫情就是命令防控就是责任的出处 浏览:126
公钥加密体制中的算法 浏览:604
python如何转换txt 浏览:546
c程序员做什么工作 浏览:563
微信源码怎么关闭 浏览:261