- 浏览: 23665 次
- 性别:
- 来自: 山西
最新评论
-
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 459Nginx+Tomcat+MemCached_集群配置 Ng ... -
Linux tomcat 安装
2014-04-08 18:16 5351.7.1 JDK配置 vi /etc/profile 填写下 ... -
linux下oracle 11g 64位安装
2014-01-02 14:50 891我安装的是linux centos 6.4 ... -
Linux下SVN安装配置
2013-12-30 18:17 402我的安装系统为linux cent ... -
XML文件编辑和格式化的利器:Firstobject free XML editor
2012-09-10 15:20 1777参考于http://www.havenliu.com/java ... -
freemarker语法总结
2012-09-10 15:17 737参考于http://www.havenliu.com/good ... -
导出word
2012-09-10 15:07 1043近日客户提出对数据完整的导出,因此在网上搜索了大半天,来完成这 ... -
转义字符
2012-09-03 16:11 754JAVA中转义字符: 1.八进制转义序列:\ + 1到3位 ... -
FusionCharts 的XML标签属性
2011-08-17 03:54 479FusionCharts 的XML标签属性 FusionCh ... -
判断是否重复
2011-05-04 08:46 738一个集合中是否有重复数据 public String get ... -
精确计算
2011-04-13 13:20 715//表示需要精确到小数 ... -
小结(乱七八糟)
2010-11-25 20:02 919乱七八糟 只有自己能看的懂吧! 1、得到表的删除数据 ...
相关推荐
c#加密解密c#加密解密c#加密解密c#加密解密c#加密解密c#加密解密c#加密解密c#加密解密
URL参数加密解密;使用简便;URL参数加密解密;使用简便;URL参数加密解密;使用简便;URL参数加密解密;使用简便;
经典代码(带详解) 函数authcode($string, $operation, $key, ...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
C# .net MD5加密解密工具及加密解密类。使用方便,可直接下载加密解密代码在项目中使用。
# PNG加密解密工具 此工具可以加密和解密PNG图片,保护您的隐私。 ## 加密 1. 选择要加密的PNG图片。 2. 输入密码并确认。 3. 点击“加密”按钮。 4. 保存加密后的PNG图片。 ## 解密 1. 选择要解密的PNG图片。 ...
MD5 单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 ...RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密函数 获取Hash描述表 RSA签名 RSA 签名验证
文件的加密解密,一些流的操作,流的加密....DES;文件的加密解密,一些流的操作,流的加密....DES
自己用c#写的加密解密软件,采用自带组件System.Security.Cryptography,有详细注释,可直接运行看结果,写给不懂加密解密知识的人使用的,不用有加密解密等编程基础,只需添加窗体进自己的程序,然后按照代码注释在...
一般的sqlite3不带加密功能,此包提供加密解密功能,让数据更安全 windows上生成lib,和dll文件放到你的工程下面即可 其他平台如cocos2d-x 移到android上只需将sqlite3secure.c编译到工程里面即可 说明,...
用c#做的加密解密的小软件,可以实现对文本的加密解密。
带加密字符的 加密 解密方法 static string encryptKey = "加密... 自定义加密字符(加密解密必须一致才能解密) /// /// 加密字符串 /// /// name="str">要加密的字符串 /// 加密后的字符串
易飞用户加密解密
DES加密 解密 方法: DESr DESw 支持3DES加密 解密 类中利用函数重载的方式 实现两种加密方式 加密后为16进制字符串 使用方法: 实例化一个对象 然后就可以随便用了。 如 DES加密 解密 CString sd,sd2; yxyDES2 ...
一个调用动态链接库的des加密解密例子。
加密解密支持库|加密解密支持库
主要为大家详细介绍了SpringBoot接口加密解密统一处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
--sunfruit 关于加密解密的理论知识已经不少了,这里只给出一个加密解密以及生成key的源代码,给大家参考
对txt文件的加密解密,采用c++编写。
用C语言实现的AES加密解密算法,用C语言实现的AES加密解密算法
300多种加密解密算法(C++)源代码 300多种加密解密算法(C++)源代码