java加密算法分享(rsa解密、对称加密、md5加密)
importjava.io.UnsupportedEncodingException;
importjava.security.InvalidKeyException;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importjava.security.PrivateKey;
importjava.security.PublicKey;
importjava.security.SecureRandom;
importjavax.crypto.BadPaddingException;
importjavax.crypto.Cipher;
importjavax.crypto.IllegalBlockSizeException;
importjavax.crypto.KeyGenerator;
importjavax.crypto.NoSuchPaddingException;
importjavax.crypto.SecretKey;
importcom.sun.mail.util.BASE64DecoderStream;
importcom.sun.mail.util.BASE64EncoderStream;
publicclassutil{
/**
*传入名文和公钥钥对数据进行RSA解密
*<br>返回值:String
*<br>@paramsrc
*<br>@parampubkey
*<br>@return
*/
publicstaticStringrsaEncoding(Stringsrc,PublicKeypubkey){
try{
Ciphercip=Cipher.getInstance("RSA");
cip.init(cip.ENCRYPT_MODE,pubkey);
byte[]by=cip.doFinal(src.getBytes());
returnnewString(BASE64EncoderStream.encode(by));
}catch(NoSuchAlgorithmExceptione){
thrownewRuntimeException(e);
}catch(NoSuchPaddingExceptione){
thrownewRuntimeException(e);
}catch(InvalidKeyExceptione){
thrownewRuntimeException(e);
}catch(IllegalBlockSizeExceptione){
thrownewRuntimeException(e);
}catch(BadPaddingExceptione){
thrownewRuntimeException(e);
}
}
/**
*传入RSA密文和私钥对数据进行解密
*<br>返回值:String
*<br>@paramsec
*<br>@paramprivkey
*<br>@return
*/
publicstaticStringrsaDeEncoding(Stringsec,PrivateKeyprivkey){
try{
Ciphercip=Cipher.getInstance("RSA");
cip.init(cip.DECRYPT_MODE,privkey);
byte[]by=BASE64DecoderStream.decode(sec.getBytes());
returnnewString(cip.doFinal(by));
}catch(NoSuchAlgorithmExceptione){
thrownewRuntimeException(e);
}catch(NoSuchPaddingExceptione){
thrownewRuntimeException(e);
}catch(InvalidKeyExceptione){
thrownewRuntimeException(e);
}catch(IllegalBlockSizeExceptione){
thrownewRuntimeException(e);
}catch(BadPaddingExceptione){
thrownewRuntimeException(e);
}
}
/**
*传入字符串、密钥,并加密字符串(对称加密加密),支持:DES、AES、DESede(3DES)
*<br>返回值:String密文
*<br>@paramsrc
*<br>@paramkey
*<br>@parammethod(DES、AES、DESede)
*<br>@return
*/
//对称加密加密
publicstaticStringdoubKeyEncoding(Stringsrc,Stringkeysrc,Stringmethod){
SecretKeykey;
try{
//生成密钥
KeyGeneratorkg= KeyGenerator.getInstance(method);
//初始化此密钥生成器。
kg.init(newSecureRandom(keysrc.getBytes("utf-8")));
key=kg.generateKey();
//加密
Cipherciph= Cipher.getInstance(method);
ciph.init(Cipher.ENCRYPT_MODE,key);
ciph.update(src.getBytes("utf-8"));
//使用64进行编码,一避免出现丢数据情景
byte[]by=BASE64EncoderStream.encode(ciph.doFinal());
returnnewString(by);
}catch(NoSuchAlgorithmExceptione){
thrownewRuntimeException(e);
}catch(NoSuchPaddingExceptione){
thrownewRuntimeException(e);
}catch(InvalidKeyExceptione){
thrownewRuntimeException(e);
}catch(IllegalBlockSizeExceptione){
thrownewRuntimeException(e);
}catch(BadPaddingExceptione){
thrownewRuntimeException(e);
}catch(UnsupportedEncodingExceptione){
thrownewRuntimeException(e);
}
}
/**
*传入字符串、密钥、加密方式,并解密字符串(对称加密解密密),支持:DES、AES、DESede(3DES)
*<br>生成时间:2014年5月2日 下午1:12:13
*<br>返回值:String密钥原文
*<br>@paramsec
*<br>@paramkey
*<br>@parammethod(DES、AES、DESede)
*<br>@return
*/
publicstaticStringdoubKeyDencoding(Stringsec,Stringkeysrc,Stringmethod){
SecretKeykey;
try{
//生成密钥
KeyGeneratorkg= KeyGenerator.getInstance(method);
//初始化此密钥生成器。
kg.init(newSecureRandom(keysrc.getBytes("utf-8")));
key=kg.generateKey();
//加密
Cipherciph= Cipher.getInstance(method);
ciph.init(ciph.DECRYPT_MODE,key);
//使用64进行解码,一避免出现丢数据情景
byte[]by=BASE64DecoderStream.decode(sec.getBytes());
ciph.update(by);
returnnewString(ciph.doFinal());
}catch(NoSuchAlgorithmExceptione){
thrownewRuntimeException(e);
}catch(NoSuchPaddingExceptione){
thrownewRuntimeException(e);
}catch(InvalidKeyExceptione){
thrownewRuntimeException(e);
}catch(IllegalBlockSizeExceptione){
thrownewRuntimeException(e);
}catch(BadPaddingExceptione){
thrownewRuntimeException(e);
}catch(UnsupportedEncodingExceptione){
thrownewRuntimeException(e);
}
}
/**
*单向信息加密(信息摘要),支持:md5、md2、SHA(SHA-1,SHA1)、SHA-256、SHA-384、SHA-512,
*<br>返回值:String 加密后的密文
*<br>@paramsrc 传入加密字符串(明文)
*<br>@parammethod 指定算法(md5、md2、SHA(SHA-1,SHA1)、SHA-256、SHA-384、SHA-512)
*<br>@return
*/
publicstaticStringecodingPasswd(Stringsrc,Stringmethod){
try{
//信息摘要算法
MessageDigestmd5=MessageDigest.getInstance(method);
md5.update(src.getBytes());
byte[]encoding=md5.digest();
//使用64进行编码,一避免出现丢数据情景
returnnewString(BASE64EncoderStream.encode(encoding));
}catch(NoSuchAlgorithmExceptione){
thrownewRuntimeException(e+"加密失败!!");
}
}
}
相关文章
- java打印数组_Java中打印数组的三种方式
- java jce_了解Java JCE的加密
- java游戏开发入门教程_JAVA制作游戏入门教程
- java官方编译器_JAVA 编译器
- java list 转json 字符串_JSON的String字符串与Java的List列表对象的相互转换
- Java集合面试题_java是什么
- java 异或加密_Java异或技操作给任意的文件加密原理及使用详解
- java+sm4+加密算法_SM4加密算法实现Java和C#相互加密解密
- java des ecb_【转】 java DES ECB模式对称加密解密
- Java加密解密DESUtil、TripleDESUtil详解编程语言
- Java的AES加密解密详解编程语言
- java加密解密类详解编程语言
- Java操作Oracle数据库:实现数据库连接与访问(java连接oracle数据库)
- Java字符串的加密解密
- 服务器使用Java进行Linux服务器监控(java监控linux)
- Linux下快速编写高效的Java代码(linux写java)
- 部署Java开发下的Linux部署(java开发linux)
- Java开发者如何快速掌握Neo4j(java操作neo4j)
- Java与Linux:前景迷人的新科技(java和linux前景)
- Java如何在Linux下运行?(java执行linux)
- 使用Java去连接MySQL数据库(java jdbc mysql)
- Java程序调用Linux系统命令实现更多功能(java调用linux命令)
- Java数据库之MySQL学习使用教程(mysql中java教程)
- Oracle和Java结合,推出新一代商城系统(java oracle商城)
- java中使用DES加密解密实例
- 兼容PHP和Java的des加密解密代码分享
- java中常用工具类之字符串操作类和MD5加密解密类