- 浏览: 24329 次
- 性别:
- 来自: 山西
最新评论
-
hunter123456:
网页错误信息:
message404
这是什么原因啊。
找不到 ...
关于SWFUpload例子 -
cheneystar:
你好,你这个我下载下来根本不能使用吗???
关于SWFUpload例子 -
shenger:
hello我在用SWFUpload嵌套在html中的时候,报了 ...
关于SWFUpload例子 -
xueshuanglong:
fireinjava 写道
老兄,我改了下你的,支持flash ...
关于SWFUpload例子 -
fireinjava:
老兄,我改了下你的,支持flash_player10.
htt ...
关于SWFUpload例子
关注1:http://hello-nick-xu.iteye.com/blog/2103775
关注2:http://hello-nick-xu.iteye.com/blog/2103781
package com.rock;
import java.io.IOException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class EncryptUtil {
private static Log logger = LogFactory.getLog(EncryptUtil.class);
private static final int KEY_SIZE = 1024;
private static final String MD5_ALGORITHM= "md5";
private static final String DES_ALGORITHM= "des";
private static final String RSA_ALGORITHM= "rsa";
private static final String SIGNATURE_ALGORITHM= "MD5withRSA";
private static MessageDigest md5;
private static BASE64Encoder encoder;
private static BASE64Decoder decoder;
private static SecureRandom random;
private static KeyPair keyPair;
private EncryptUtil() {
}
static {
try {
md5 = MessageDigest.getInstance(MD5_ALGORITHM);
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA_ALGORITHM);
keyPairGenerator.initialize(KEY_SIZE);
keyPair = keyPairGenerator.generateKeyPair();
}
catch (NoSuchAlgorithmException e) {
// Exception handler
logger.error(e);
}
encoder = new BASE64Encoder();
decoder = new BASE64Decoder();
random = new SecureRandom();
}
/**
* 功能简述: 使用md5进行单向加密.
*/
public static String encryptMD5(String plainText) {
byte[] cipherData = md5.digest(plainText.getBytes());
StringBuilder builder = new StringBuilder();
for(byte cipher : cipherData) {
String toHexStr = Integer.toHexString(cipher & 0xff);
builder.append(toHexStr.length() == 1 ? "0" + toHexStr : toHexStr);
}
return builder.toString();
}
// public static void main(String[] args) {
// System.out.println("=======>>MD5加密: "+encryptMD5("xueshuanglong_198822"));
// //8ff95d3b0db752ac6d10b21bc05dec38
// }
/**
* 功能简述: 使用BASE64进行加密.
* @param plainData 明文数据
* @return 加密之后的文本内容
*/
public static String encryptBASE64(byte[] plainData) {
return encoder.encode(plainData);
}
// public static void main(String[] args) {
//
// System.out.println("=======>>BASE64加密: "+encryptBASE64("xueshuanglong_198822".getBytes()));
// //eHVlc2h1YW5nbG9uZ18xOTg4MjI=
// }
/**
* 功能简述: 使用BASE64进行解密.
* @param cipherText 密文文本
* @return 解密之后的数据
*/
public static byte[] decryptBASE64(String cipherText) {
byte[] plainData = null;
try {
plainData = decoder.decodeBuffer(cipherText);
}
catch (IOException e) {
// Exception handler
logger.error(e);
}
return plainData;
}
// public static void main(String[] args) {
//
// System.out.println("=======>>BASE64解密: "+new String(decryptBASE64("eHVlc2h1YW5nbG9uZ18xOTg4MjI=")));
// //eHVlc2h1YW5nbG9uZ18xOTg4MjI=
//}
/**
* 功能简述: 使用DES算法进行加密.
* @param plainData 明文数据
* @param key 加密密钥
* @return
*/
public static byte[] encryptDES(byte[] plainData, String key) {
return processCipher(plainData, createSecretKey(key), Cipher.ENCRYPT_MODE, DES_ALGORITHM);
}
// public static void main(String[] args) {
// System.out.println("=======>>DES加密: "+encryptBASE64(encryptDES("xueshuanglong_198822".getBytes(), "1234567890")));
// //AW+L+c1d/zTRW0xFkA05Wft+S8LmvkCL
// }
/**
* 功能简述: 使用DES算法进行解密.
* @param cipherData 密文数据
* @param key 解密密钥
* @return
*/
public static byte[] decryptDES(byte[] cipherData, String key) {
return processCipher(cipherData, createSecretKey(key), Cipher.DECRYPT_MODE, DES_ALGORITHM);
}
// public static void main(String[] args) {
// System.out.println("=======>>DES解密: "+new String(decryptDES(decryptBASE64("AW+L+c1d/zTRW0xFkA05Wft+S8LmvkCL"),"1234567890")));
//
// }
/**
* 功能简述: 根据key创建密钥SecretKey.
* @param key
* @return
*/
private static SecretKey createSecretKey(String key) {
SecretKey secretKey = null;
try {
DESKeySpec keySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES_ALGORITHM);
secretKey = keyFactory.generateSecret(keySpec);
}
catch (Exception e) {
// Exception handler
logger.error(e);
}
return secretKey;
}
/**
* 功能简述: 加密/解密处理流程.
* @param processData 待处理的数据
* @param key 提供的密钥
* @param opsMode 工作模式
* @param algorithm 使用的算法
* @return
*/
private static byte[] processCipher(byte[] processData, Key key, int opsMode, String algorithm) {
try{
Cipher cipher = Cipher.getInstance(algorithm);
cipher.init(opsMode, key, random);
return cipher.doFinal(processData);
}
catch (Exception e) {
// Exception handler
logger.error(e);
}
return null;
}
/**
* 功能简述: 创建私钥,用于RSA非对称加密.
* @return
*/
public static PrivateKey createPrivateKey() {
return keyPair.getPrivate();
}
/**
* 功能简述: 创建公钥,用于RSA非对称加密.
* @return
*/
public static PublicKey createPublicKey() {
return keyPair.getPublic();
}
/**
* 功能简述: 使用RSA算法加密.
* @param plainData 明文数据
* @param key 密钥
* @return
*/
public static byte[] encryptRSA(byte[] plainData, Key key) {
return processCipher(plainData, key, Cipher.ENCRYPT_MODE, RSA_ALGORITHM);
}
// public static void main(String[] args) {
//
// System.out.println("=======>>RSA加密: "+new BASE64Encoder().encode(encryptRSA("Hello , world !".getBytes(), createPrivateKey())));
// }
/**
* 功能简述: 使用RSA算法解密.
* @param cipherData 密文数据
* @param key 密钥
* @return
*/
public static byte[] decryptRSA(byte[] cipherData, Key key) {
return processCipher(cipherData, key, Cipher.DECRYPT_MODE, RSA_ALGORITHM);
}
public static void main(String[] args) {
byte[] cipherData = encryptRSA("Hello , world !".getBytes(), createPrivateKey());
System.out.println("=======>>RSA加密: "+new BASE64Encoder().encode(cipherData));
System.out.println("=======>>RSA解密: "+new String(decryptRSA(cipherData, createPublicKey())));
byte[] signData=createSignature(cipherData,createPrivateKey());
System.out.println("=======>>使用私钥对加密数据创建数字签名: "+new BASE64Encoder().encode(signData));
System.out.println("=======>>使用公钥对数字签名进行验证: "+verifySignature(cipherData,signData,createPublicKey()));
}
/**
* 功能简述: 使用私钥对加密数据创建数字签名.
* @param cipherData 已经加密过的数据
* @param privateKey 私钥
* @return
*/
public static byte[] createSignature(byte[] cipherData, PrivateKey privateKey) {
try {
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initSign(privateKey);
signature.update(cipherData);
return signature.sign();
}
catch (Exception e) {
// Exception handler
logger.error(e);
}
return null;
}
/**
* 功能简述: 使用公钥对数字签名进行验证.
* @param signData 数字签名
* @param publicKey 公钥
* @return
*/
public static boolean verifySignature(byte[] cipherData, byte[] signData, PublicKey publicKey) {
try {
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initVerify(publicKey);
signature.update(cipherData);
return signature.verify(signData);
}
catch (Exception e) {
// Exception handler
logger.error(e);
}
return false;
}
}
- EncryptUtil.zip (2.2 KB)
- 下载次数: 1
发表评论
-
Nginx+Tomcat+MemCached_集群配置
2016-08-12 12:54 489Nginx+Tomcat+MemCached_集群配置 Ng ... -
Linux tomcat 安装
2014-04-08 18:16 5681.7.1 JDK配置 vi /etc/profile 填写下 ... -
linux下oracle 11g 64位安装
2014-01-02 14:50 919我安装的是linux centos 6.4 ... -
Linux下SVN安装配置
2013-12-30 18:17 433我的安装系统为linux cent ... -
XML文件编辑和格式化的利器:Firstobject free XML editor
2012-09-10 15:20 1810参考于http://www.havenliu.com/java ... -
freemarker语法总结
2012-09-10 15:17 782参考于http://www.havenliu.com/good ... -
导出word
2012-09-10 15:07 1081近日客户提出对数据完整的导出,因此在网上搜索了大半天,来完成这 ... -
转义字符
2012-09-03 16:11 779JAVA中转义字符: 1.八进制转义序列:\ + 1到3位 ... -
FusionCharts 的XML标签属性
2011-08-17 03:54 506FusionCharts 的XML标签属性 FusionCh ... -
判断是否重复
2011-05-04 08:46 780一个集合中是否有重复数据 public String get ... -
精确计算
2011-04-13 13:20 749//表示需要精确到小数 ... -
小结(乱七八糟)
2010-11-25 20:02 953乱七八糟 只有自己能看的懂吧! 1、得到表的删除数据 ...
相关推荐
MD5 单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 ...RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密函数 获取Hash描述表 RSA签名 RSA 签名验证
《易飞用户加密解密详解》 在信息技术领域,数据安全是至关重要的议题,而用户加密解密技术正是保障信息安全的重要手段。本文将围绕“易飞用户加密解密”这一主题,深入探讨其原理、应用及操作流程,帮助读者更好地...
在本文中,我们将深入探讨如何在SpringBoot中实现接口的加密解密统一处理,以及如何通过自定义注解来灵活控制加密解密的执行。 首先,我们创建两个自定义注解,`DecryptRequest`和`EncryptResponse`,用于标识哪些...
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。
URL参数加密解密;使用简便;URL参数加密解密;使用简便;URL参数加密解密;使用简便;URL参数加密解密;使用简便;
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
**C# RSA加密解密详解** 在信息安全领域,加密技术是一种至关重要的手段,用于保护数据的隐私和安全性。RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,广泛应用于网络通信、数据存储等领域。C#作为.NET...
《深入理解ENC文件加密解密工具:以PrimaSoft Encryption Utility为例》 在信息安全日益重要的今天,文件加密解密工具成为保护数据隐私的关键工具。"ENC文件加密解密工具",特别是PrimaSoft Encryption Utility,是...
标题中的“3DES加密解密工具”指的是一个用于执行三重数据加密标准(3DES,Triple DES)的软件工具,这种工具通常用于保护敏感数据的安全,确保信息在传输过程中的机密性。3DES是DES(Data Encryption Standard,...
经典代码(带详解) 函数authcode($string, $operation, $key, ...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#中实现文件加密主要依赖于.NET Framework提供的加密类库,如System.Security....
"java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...
本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...
C# .net MD5加密解密工具及加密解密类。使用方便,可直接下载加密解密代码在项目中使用。
在这个特定的案例中,"MFC实现文本文件加密解密"是一个使用MFC框架编写的程序,它允许用户对文本文件进行加密和解密操作,确保敏感数据在传输或存储时的安全性。 在VC2010环境下,开发者通常会利用MFC的类库,如...
脚本加密解密器是一种工具,它的主要功能是将脚本代码进行加密处理,以使其在未经授权的情况下无法被轻易读取或理解,同时也能提供解密机制,使得在需要执行时能够正确解读并运行加密后的脚本。 脚本加密通常涉及到...
这个名为"vb.net加密解密源代码"的项目,是利用Visual Studio 2008开发的一个小型应用程序,提供了对数据进行加解密的功能。下面我们将详细探讨相关的知识点。 1. **VB.NET基础**: VB.NET是微软公司开发的一种...
QT C++ AES字符串加密解密类库是一种在C++编程环境中使用QT框架实现的高级加密标准(AES)加密和解密工具。QT是一个流行的开源跨平台应用开发框架,广泛应用于桌面、移动和嵌入式系统。AES是目前广泛应用的对称加密...
"Android APK 加密 解密工具"就是这样一个专门用于加密和解密APK文件的实用程序,它可以帮助开发者增加额外的安全层,确保只有经过授权的用户能够安装和运行应用。 首先,我们需要理解APK加密的基本原理。通常,APK...