字符串加密和解密工具类PassCrypt
2018-01-09 10:10
85 查看
很多时候用户密码保存在数据库中会对他进行加密,这时候一般用MD5加密,因为MD5加了密很难戒,但有时候用户注册或找回密码时,会发邮箱验证,而邮箱验证需要有一个激活链接,链接中到会带user的用户名或者邮箱,这时候的用户名和邮箱号,通常也是会选择给他加密的,但用用户操作完后,要对这个用户名或邮箱进行解密,这样才能识别到底是哪个用户或邮箱在操作,这时候我们就可以用以下的工具类进行加密和解密,只需直接调用静态方法,传一个你想加密的字符串进来即可。
直接复制以下类即可:
package com.tx.cs.util;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* 密碼加密和解密
* Created:
* Update:
* @author Administrator
*
*/
public class PassCrypt {
private static final String
PASSWORD_CRYPT_KEY = "Spring brother is a true man!";
private final static String DES = "DES";
private static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b
& 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs.toUpperCase();
}
private static byte[] hex2byte(byte[] b) {
byte[] b2 = new byte[b.length/2];
for (int n = 0; n < b.length; n+=2) {
String item = new String(b,n,2);
b2[n/2] = (byte)Integer.parseInt(item,16);
}
return b2;
}
/**
* 加密
* @param src 數據源
* @param key 加密密匙
* @return 返回加密后的數據
* @throws Exception
*/
private static byte[] encrypt(byte[] src, byte[] key)throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
return cipher.doFinal(src);
}
/**
* 解密
* @param src 數據源
* @param key 加密密匙
* @return 返回解密后的數據
* @throws Exception
*/
private static byte[] decrypt(byte[] src, byte[] key)throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
return cipher.doFinal(src);
}
/**
* 獲取加密后的數據
* @param src 數據源
* @return 加密后的字符串
*/
public static String getEncrypt(String password)
{
try{
return byte2hex(
encrypt(password.getBytes(),PASSWORD_CRYPT_KEY.getBytes()));
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 獲取解密后的數據
* @param src 數據源
* @return 解密后的字符串
*/
public static String getDecrypt(String password)
{
try{
return new String(decrypt(hex2byte(password.getBytes()),
PASSWORD_CRYPT_KEY.getBytes()));
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 進行密碼的校驗
* @param password 加密后的密碼
* @param inputString 輸入的文本
* @return
*/
public static boolean validatePassword(String password , String inputString)
{
if(password.equals(getEncrypt(inputString))){
return true;
}
return false;
}
}
直接复制以下类即可:
package com.tx.cs.util;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* 密碼加密和解密
* Created:
* Update:
* @author Administrator
*
*/
public class PassCrypt {
private static final String
PASSWORD_CRYPT_KEY = "Spring brother is a true man!";
private final static String DES = "DES";
private static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b
& 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs.toUpperCase();
}
private static byte[] hex2byte(byte[] b) {
byte[] b2 = new byte[b.length/2];
for (int n = 0; n < b.length; n+=2) {
String item = new String(b,n,2);
b2[n/2] = (byte)Integer.parseInt(item,16);
}
return b2;
}
/**
* 加密
* @param src 數據源
* @param key 加密密匙
* @return 返回加密后的數據
* @throws Exception
*/
private static byte[] encrypt(byte[] src, byte[] key)throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
return cipher.doFinal(src);
}
/**
* 解密
* @param src 數據源
* @param key 加密密匙
* @return 返回解密后的數據
* @throws Exception
*/
private static byte[] decrypt(byte[] src, byte[] key)throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
return cipher.doFinal(src);
}
/**
* 獲取加密后的數據
* @param src 數據源
* @return 加密后的字符串
*/
public static String getEncrypt(String password)
{
try{
return byte2hex(
encrypt(password.getBytes(),PASSWORD_CRYPT_KEY.getBytes()));
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 獲取解密后的數據
* @param src 數據源
* @return 解密后的字符串
*/
public static String getDecrypt(String password)
{
try{
return new String(decrypt(hex2byte(password.getBytes()),
PASSWORD_CRYPT_KEY.getBytes()));
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 進行密碼的校驗
* @param password 加密后的密碼
* @param inputString 輸入的文本
* @return
*/
public static boolean validatePassword(String password , String inputString)
{
if(password.equals(getEncrypt(inputString))){
return true;
}
return false;
}
}
相关文章推荐
- DES加解密工具类
- 基于正则的INI读写工具类,支持加密解密
- 文件加密解密工具类
- java加解密工具类,支持RSA,AES(未测试)
- 2.2.2 编码,解码,加密,解密的工具类
- Android RSA加密解密的 工具类的使用
- web.config 中connectionStrings连接字符串加密、解密问题
- 对Java配置文件中敏感信息进行加解密的工具类
- ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]
- 异或运算实现简单的字符串加密和解密
- AES加密、解密工具类
- 采用密码加密的javascript字符串加密、解密程序
- C#中DES对字符串加密与解密
- 3DES加密、解密工具类
- java 字符串加密与解密
- AES 对称加密解密工具类
- Java DES 加解密字符串、文件 工具类通用
- 加密/解密工具类
- 采用密码加密的javascript字符串加密、解密程序
- 字符串加密与解密