`
- 浏览:
53084 次
- 性别:
- 来自:
上海
-
<!---->
**
*加密解密类
*
*
*
*/
package?com.abacus.common?;
import?java.security.?*;
import?javax.crypto.?*;
/**
*加密解密类
*/
public?class?Eryptogram?
{
????private?static?String?Algorithm?="DES";
????//定义加密算法,可用DES,DESede,Blowfish
?????static?boolean?debug?=false?;
????/**
????*构造子注解.
????*/
????public?Eryptogram?()
????{
????}
????/**
????*生成密钥
????*@returnbyte[]返回生成的密钥
????*@throwsexception扔出异常.
????*/
????public?static?byte?[]getSecretKey?()throws?Exception?
????{
????????KeyGenerator?keygen?=KeyGenerator.getInstance?(Algorithm?);
????????SecretKey?deskey?=keygen.generateKey?();
????????if?(debug?)System.out.println?("生成密钥:"+byte2hex?(deskey.getEncoded?()));
????????return?deskey.getEncoded?();
????}
????/**
????*将指定的数据根据提供的密钥进行加密
????*@paraminput需要加密的数据
????*@paramkey密钥
????*@returnbyte[]加密后的数据
????*@throwsException
????*/
????public?static?byte?[]encryptData?(byte?[]input?,byte?[]key?)throws?Exception?
????{
????????SecretKey?deskey?=new?javax.crypto.spec.SecretKeySpec?(key?,Algorithm?);
????????if?(debug?)
????????{
????????????System.out.println?("加密前的二进串:"+byte2hex?(input?));
????????????System.out.println?("加密前的字符串:"+new?String?(input?));
????????}
????????Cipher?c1?=Cipher.getInstance?(Algorithm?);
????????c1.init?(Cipher.ENCRYPT_MODE?,deskey?);
????????byte?[]cipherByte?=c1.doFinal?(input?);
????????if?(debug?)System.out.println?("加密后的二进串:"+byte2hex?(cipherByte?));
????????return?cipherByte?;
????}
????/**
????*将给定的已加密的数据通过指定的密钥进行解密
????*@paraminput待解密的数据
????*@paramkey密钥
????*@returnbyte[]解密后的数据
????*@throwsException
????*/
????public?static?byte?[]decryptData?(byte?[]input?,byte?[]key?)throws?Exception?
????{
????????SecretKey?deskey?=new?javax.crypto.spec.SecretKeySpec?(key?,Algorithm?);
????????if?(debug?)System.out.println?("解密前的信息:"+byte2hex?(input?));
????????Cipher?c1?=Cipher.getInstance?(Algorithm?);
????????c1.init?(Cipher.DECRYPT_MODE?,deskey?);
????????byte?[]clearByte?=c1.doFinal?(input?);
????????if?(debug?)
????????{
????????????System.out.println?("解密后的二进串:"+byte2hex?(clearByte?));
????????????System.out.println?("解密后的字符串:"+(new?String?(clearByte?)));
????????}
????????return?clearByte?;
????}
????/**
????*字节码转换成16进制字符串
????*@parambyte[]b输入要转换的字节码
????*@returnString返回转换后的16进制字符串
????*/
????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?)
????{
????????try?
????????{
????????????debug?=false?;
????????????Eryptogram?etg?=new?Eryptogram?();
????????????byte?[]key?=etg.getSecretKey?();
????????????System.out.println?("key="+key?);
????????????String?aa?="1234567";
????????????byte?[]data?=aa.getBytes?();
????????????System.out.println?(data?);
????????????byte?[]en?=etg.encryptData?(data?,key?);
????????????System.out.println?("encryptData="+new?String?(en?));
????????????byte?[]de?=etg.decryptData?(en?,key?);
????????????System.out.println?("decryptData="+new?String?(de?));
????????}
????????catch?(Exception?e?)
????????{
????????????e.printStackTrace?();
????????}
????}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Java中的URL加密处理是网络安全传输数据的一个重要环节,它可以防止敏感信息在传输过程中被窃取或篡改。本文将深入探讨如何使用Java实现URL加密,特别是基于Base64编码和编码转换的方式。我们将重点关注以下几个方面...
在Java开发中,URL参数加密解密是网络安全的重要环节,特别是在J2EE应用程序中,确保数据传输的安全性至关重要。URL参数通常包含用户敏感信息,如登录凭证、交易详情等,因此需要进行加密处理以防止数据在传输过程中...
URL参数加密解密;使用简便;URL参数加密解密;使用简便;URL参数加密解密;使用简便;URL参数加密解密;使用简便;
Java URL转换工具是一种用于解析和处理URL的程序,它能够帮助开发者获取URL背后的真实地址,尤其是在面对重定向、参数编码等情况时。在Web开发中,URL(Uniform Resource Locator)是互联网资源的统一地址,它包含了...
- 客户端发送包含加密参数的请求到服务器。 - 服务器接收到请求后,解密参数并进行合法性检查。 - 如果参数校验通过,服务器执行相应业务逻辑,否则返回错误信息。 - 服务器将处理结果返回给客户端,客户端接收...
Spring MVC请求参数与响应结果全局加密和解密详解 在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 ...
3. **加密参数**:使用Java的加密库对参数进行加密,得到密文。 4. **Base64编码**:将加密后的密文进行Base64编码,以便在网络上传输。 5. **构造请求体**:将Base64编码后的密文放入请求体中。 6. **设置请求头**...
在这个实例中,可能是在URL中包含了一些敏感信息,如API密钥或个性化参数,为了防止这些信息在传输过程中被窃取或篡改,作者使用了AES来加密URL。 首先,我们来看AES加密的基本原理。AES是一种分组密码,它将明文...
例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码...
6. **URL加密**:在某些情况下,URL中可能包含敏感信息,如查询参数。这些信息可以使用相同的方法(如AES)加密后再放入URL中。但要注意,URL只能包含可打印的ASCII字符,所以加密后的结果可能需要进行Base64编码以...
这些数据通常以请求参数的形式存在,例如URL查询参数、POST表单数据等。在某些情况下,我们可能需要在服务器端动态地修改这些参数,以实现特定的功能或者应对安全问题。本文将详细探讨如何在Java中修改请求参数,...
4. **签名(Signature)**:为确保数据安全,服务提供商可能会要求提供一个签名,通常是通过特定算法(如HMAC-SHA256)对其他参数和私钥进行加密得到的值。 5. **回调URL(Callback URL)**:当短信发送成功或失败...
在实际解决乱码问题的过程中,如果发现使用Base64加密传输中文数据还会出现问题,可以改用URL编码的方式来传输数据,即使用JavaScript的`encodeURI`函数对数据进行两次URL编码,后端接收到后进行一次URL解码即可。...
- **构建HttpGet请求**:使用`HttpGet`类创建一个HTTP GET请求,指定要下载的URL作为参数。 - **设置请求头**(可选):如果URL需要身份验证或其他特定头信息,可以通过`setHeader()`方法添加。 - **执行请求**:...
6. **源代码示例**:在提供的"aa"文件中,可能包含了一段使用Java和JSP实现的URL参数加密解密的代码。通过分析这段代码,我们可以学习如何在实际项目中应用这些加密解密技术,理解其工作原理,并了解如何将它们集成...
本篇文章将深入探讨这个问题,并提出一种另类的解决方案——利用JNI(Java Native Interface)进行加密和解密操作来规避乱码问题。 首先,我们需要理解为什么会出现中文乱码。这通常与字符编码有关,Java和JSP默认...
Java URL(统一资源定位符)是Java编程语言中用于表示互联网资源地址的一种类。它遵循通用的URI(统一资源标识符)标准,并扩展了HTTP、FTP等特定协议的支持。理解和熟练使用Java URL对于进行网络编程至关重要,特别...
今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码: 代码如下: [removed] <!– Begin function Encrypt(str, pwd) { if(str==””)return “”;...
本篇文章将深入探讨如何使用jasypt(Java Simple and Strong Encryption)库来加密Spring Boot应用的配置文件内容。 jasypt是一个强大的Java加密库,它为开发者提供了简单的API,可以轻松地在应用程序中集成加密...
接下来,`Digests.java`文件可能包含了处理Digest认证所需的各种加密和哈希操作。关键概念包括: - **MD5**: Digest认证通常使用MD5算法对数据进行哈希,以创建一个不可读的表示形式。 - **Nonce**: 服务器返回的一...