import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class APDes3 {
/**
* 加密String明文输入,经过BASE64编码String密文输出
*
* @param text,keystr,ivstr
* @return
*/
public static String encrypt(String text, String keystr,String ivstr) throws Exception
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] keyBytes= new byte[16];
byte[] ivBytes = new byte[16];
byte[] b= keystr.getBytes("UTF-8");
byte[] v = ivstr.getBytes("UTF-8");
int len= b.length;
int len2 = v.length;
if (len > keyBytes.length) len = keyBytes.length;
if (len2> ivBytes.length) len2 = ivBytes.length;
System.arraycopy(b, 0, keyBytes, 0, len);
System.arraycopy(v,0,ivBytes,0,len2);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.ENCRYPT_MODE,keySpec,ivSpec);
BASE64Encoder decoder = new BASE64Encoder();
byte [] results = cipher.doFinal(text.getBytes("UTF8"));
return decoder.encode(results);
}
/**
* 解密 以BASE64形式String密文输入,String明文输出
*
* @param text,keystr,ivstr
* @return
*/
public static String decrypt(String text, String keystr,String ivstr) throws Exception
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] keyBytes= new byte[16];
byte[] ivBytes = new byte[16];
byte[] b= keystr.getBytes("UTF-8");
byte[] v = ivstr.getBytes("UTF-8");
int len= b.length;
int len2 = v.length;
if (len > keyBytes.length) len = keyBytes.length;
if (len2> ivBytes.length) len2 = ivBytes.length;
System.arraycopy(b, 0, keyBytes, 0, len);
System.arraycopy(v,0,ivBytes,0,len2);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.DECRYPT_MODE,keySpec,ivSpec);
BASE64Decoder decoder = new BASE64Decoder();
byte [] results = cipher.doFinal(decoder.decodeBuffer(text));
return new String(results,"UTF-8");
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String text = "Account =aqtest201,Password =test4321,NewPassword =test4321;";
String key = "ITMSYNlCKMTRUDFJ";
String ivStr = "12345678";
String strenc = APDes3.encrypt(text,key,ivStr);//加密
System.out.println("strenc is :" + strenc);
String strDes = APDes3.decrypt(strenc,key,ivStr);//解密
System.out.println("strDes is :" + strDes);
strenc = java.net.URLEncoder.encode(strenc);
System.out.println("URLEncoder.encode(data) :" +strenc);
strenc = java.net.URLDecoder.decode(strenc);
System.out.println("URLDecoder.decoder(data) :" +strenc);
}
}
分享到:
相关推荐
其中,加密又分全盘加密(Android 4.4 引入)和文件级加密(Android 7.0 引入),本文将论述加密中的全盘加密的基本知识。全盘加密在 Android 4.4 中引入,在 Android 5.0 中做了比较大的更新。 本文部分片段摘自 ...
苏林加密系统是一款专门为php加密的程序,支持sg11加密、xend加密、goto加密、Leave加密、enphp加密、NoName加密 可以发展用户,可以设置某加密价格,支持API接口加密,对接官方支付、码支付和易支付。 更新记录:...
在实际操作中,经常采用混合加密模式:利用非对称加密算法交换对称加密算法的密钥,再利用对称加密算法加密实际数据,从而结合两种加密算法的优点。 总之,加密算法是信息安全领域的基石,合理选择和使用加密算法...
在IT安全领域,加密技术是保护数据隐私和安全的关键手段。加密主要分为两种类型:对称加密和非对称加密。这两种加密方式各有其特点,适用于不同的场景。 **对称加密** 是一种历史悠久的加密方法,它依赖于一个相同...
单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 加密字符串 密钥为系统默认 加密文件 解密字符串 解密文件 128位MD5算法加密字符串 128位MD5算法加密Byte数组 32位MD5加密 Base64加密 Base64解密 DES加密/解密...
同态加密是一种高级的加密技术,它允许对加密数据进行计算,而无需先解密。在同态加密下,操作的结果仍然是加密的,但与原始未加密数据进行相同的操作会得到相同的结果。这一特性使得同态加密在数据隐私保护、云计算...
在这个场景中,我们关注的是如何加密POST请求中的数据,以及如何通过工具如HttpWatch来查看这些加密数据。下面我们将深入探讨POST提交数据加密的原理、方法以及HttpWatch工具的使用。 首先,POST方法是HTTP协议中...
代理重加密(Proxy Re-Encryption)是一种在公钥加密系统中的高级加密技术,它允许一个可信的第三方(代理)在不获取原始密文内容的情况下,将一个用户加密的信息重加密成另一个用户能解密的形式。这项技术在云计算...
在VB6.0环境下开发的这个程序主要关注的是数据安全领域,特别是文件的加密与解密功能。VB(Visual Basic)是一种由微软公司推出的事件驱动编程语言,它以其易用性和丰富的控件库深受程序员喜爱。在这个特定的项目中...
《Codesys平台功能块加密详解》 Codesys作为一款强大的工业自动化编程软件,提供了丰富的功能以确保项目的安全性,特别是对于程序和工艺块的加密管理。本文将深入探讨Codesys平台的功能块加密机制,包括设备加密、...
本文将深入探讨如何实现Android图片的加密和解密,主要关注国际标准的AES(Advanced Encryption Standard)加密和混入字节加密这两种方法。 AES加密是目前广泛使用的对称加密算法,其安全性高,效率优良。在Android...
本次使用JAVA语言,采用3DES加密算法进行对文本文件的加密,通过二进制和十六进制的转换来实现,产生加密文件,再对加密文件进行解密。 关键词:DES加密算法、加密、解密。摘要 随着现代网络技术的飞速发展,人们...
在网络安全领域,数据加密是保障信息安全的重要手段。在这个场景中,我们关注的是“JS前台加密,Java后台解密实现”,这通常涉及到用户敏感信息如用户名和密码的安全传输。以下是关于这个话题的详细解释: 首先,**...
Springboot项目报文加密(采用AES、RSA动态加密策略) Springboot项目报文加密(采用AES、RSA动态加密策略) Springboot项目报文加密(采用AES、RSA动态加密策略) Springboot项目报文加密(采用AES、RSA动态加密...
《光盘加密大师 6.0:保护你的数据安全与隐私》 在信息化时代,数据安全和隐私保护显得尤为重要,特别是在存储介质广泛使用的背景下。光盘作为一种常见的存储工具,其内容的安全性同样不可忽视。"光盘加密大师 6.0...
全同态加密(Fully Homomorphic Encryption,FHE)是一种先进的加密技术,允许在密文上进行任意计算,而无需解密。这意味着数据可以保持加密状态,同时仍能执行计算,从而实现了数据隐私与计算功能的完美结合。IBM是...
加密和解密是信息安全领域中的核心概念,主要目的是保护数据的隐私性和完整性。在这个场景中,我们关注的是针对Hex文件的加密与解密过程,尤其是使用DES(Data Encryption Standard)算法进行操作。DES是一种古老的...
在iOS开发中,为了保护应用程序的数据安全,对plist文件进行加密是常见的做法。Plist(Property List)文件是苹果系统中用于存储配置信息或轻量级数据的文件,通常以XML或二进制格式存在。当这些文件包含敏感信息时...
本项目包含了一个C#实现的各种加密方式的小工具,包含了可以直接运行的源代码以及类库文件,用户不仅可以编译这些源代码,还可以直接运行它们,从而在实际项目中应用这些加密和解密技术。 首先,我们要理解加密和...
苏林加密系统是一款专门为php加密的程序,支持sg11加密、xend加密、goto加密、Leave加密、enphp加密、NoName加密 可以发展用户,可以设置某加密价格,支持API接口加密,对接官方支付、码支付和易支付。 更新记录:...