Java实现MD5, SHA-1, BASE64, 3DES加解密方法
2012-06-08 14:09
801 查看
MD5、SHA-1为数字签名。
BASE64, 3DES为可逆加密方法。
BASE64, 3DES为可逆加密方法。
import java.security.MessageDigest; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * Java 加解密工具类 * * @author mosesxin@gmail.com * */ public class EncryptUtil { private static final String UTF8 = "utf-8"; //定义 加密算法,可用 DES,DESede,Blowfish private static final String ALGORITHM_DESEDE = "DESede"; /** * MD5数字签名 * * @param src * @return * @throws Exception */ public String md5Digest(String src) throws Exception { // 定义数字签名方法, 可用:MD5, SHA-1 MessageDigest md = MessageDigest.getInstance("MD5"); byte[] b = md.digest(src.getBytes(UTF8)); return this.byte2HexStr(b); } /** * BASE64 加密 * * @param src * @return * @throws Exception */ public String base64Encoder(String src) throws Exception { BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(src.getBytes(UTF8)); } /** * BASE64解密 * * @param dest * @return * @throws Exception */ public String base64Decoder(String dest) throws Exception { BASE64Decoder decoder = new BASE64Decoder(); return new String(decoder.decodeBuffer(dest), UTF8); } /** * 3DES加密 * * @param src * @param key * @return * @throws Exception */ public String desedeEncoder(String src, String key) throws Exception { SecretKey secretKey = new SecretKeySpec(build3DesKey(key), ALGORITHM_DESEDE); Cipher cipher = Cipher.getInstance(ALGORITHM_DESEDE); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] b = cipher.doFinal(src.getBytes(UTF8)); return byte2HexStr(b); } /** * 3DES解密 * * @param dest * @param key * @return * @throws Exception */ public String desedeDecoder(String dest, String key) throws Exception { SecretKey secretKey = new SecretKeySpec(build3DesKey(key), ALGORITHM_DESEDE); Cipher cipher = Cipher.getInstance(ALGORITHM_DESEDE); cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] b = cipher.doFinal(str2ByteArray(dest)); return new String(b, UTF8); } /** * 字节数组转化为大写16进制字符串 * * @param b * @return */ private String byte2HexStr(byte[] b) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < b.length; i++) { String s = Integer.toHexString(b[i] & 0xFF); if (s.length() == 1) { sb.append("0"); } sb.append(s.toUpperCase()); } return sb.toString(); } /** * 字符串转字节数组 * * @param s * @return */ private byte[] str2ByteArray(String s) { int byteArrayLength = s.length()/2; byte[] b = new byte[byteArrayLength]; for (int i = 0; i < byteArrayLength; i++) { byte b0 = (byte) Integer.valueOf(s.substring(i*2, i*2+2), 16).intValue(); b[i] = b0; } return b; } /** * 构造3DES加解密方法key * * @param keyStr * @return * @throws Exception */ private byte[] build3DesKey(String keyStr) throws Exception { byte[] key = new byte[24]; byte[] temp = keyStr.getBytes(UTF8); if (key.length > temp.length) { System.arraycopy(temp, 0, key, 0, temp.length); } else { System.arraycopy(temp, 0, key, 0, key.length); } return key; } }
相关文章推荐
- MD5, SHA-1, BASE64, 3DES加解密方法Java实现
- 【JAVA】常用加解密算法总结及JAVA实现【BASE64,MD5,SHA,DES,3DES,AES,RSA】
- BASE64,MD5,SHA,HMAC加密与解密算法(java)
- [Delphi] XE2下实现标准的3DES加解密一种方法(可与Java,c#互通)
- Java实现的Base64、MD5、3DES工具
- Java实现的Base64、MD5、3DES工具
- Java RSA加密解密实现方法分析【附BASE64 jar包下载】
- 使用java实现MD5、BASE64、RSA的方法
- Java实现的Base64、MD5、3DES工具
- java中加密的实现方法(MD5,MD2,SHA)
- 基于Java实现的Base64加密、解密原理代码
- 在Java中使用MessageDigest实现MD5,SHA-1等加密
- 3DES+Base64 加密解密的方法
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
- java中 Base64,MD5,DES,RSA 加解密
- 利用Java实现Base64加解密
- 利用java自带的base64实现加密、解密
- Java MD5 Base64加密解密
- C# 加密解密(DES,3DES,MD5,Base64) 类
- BASE64,MD5,SHA,HMAC加密與解密算法(java)