package sy.util;
import it.sauronsoftware.base64.Base64;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 加密工具类
*
* md5加密出来的长度是32位
*
* sha加密出来的长度是40位
*
* base64加密可以指定字符集,可以解密
*
* @author
*
*/
public class Encrypt {
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
// md5加密测试
String md5_1 = md5("123456");
String md5_2 = md5("测试题");
System.out.println(md5_1 + "\n" + md5_2);
// sha加密测试
String sha_1 = sha("123456");
String sha_2 = sha("测试题");
System.out.println(sha_1 + "\n" + sha_2);
}
/**
* 加密
*
* @param inputText
* @return
*/
public static String e(String inputText) {
return md5(inputText);
}
/**
* 解密
*
* @param inputText
* @return
*/
public static String d(String inputText) {
return base64Decode(inputText, "UTF-8");
}
/**
* 使用Base64加密
*
* @param inputText
* @param charset
* 字符集
* @return
*/
public static String base64Encode(String inputText, String... charset) {
if (charset.length == 1) {
return Base64.encode(inputText, charset[0]);
} else {
return Base64.encode(inputText);
}
}
/**
* Base64解密
*
* @param inputText
* @param charset
* 字符集
* @return
*/
public static String base64Decode(String inputText, String... charset) {
if (charset.length == 1) {
return Base64.decode(inputText, charset[0]);
} else {
return Base64.decode(inputText);
}
}
/**
* 二次加密,应该破解不了了吧?
*
* @param inputText
* @return
*/
public static String md5AndSha(String inputText) {
return sha(md5(inputText));
}
/**
* md5加密
*
* @param inputText
* @return
*/
public static String md5(String inputText) {
return encrypt(inputText, "md5");
}
/**
* sha加密
*
* @param inputText
* @return
*/
public static String sha(String inputText) {
return encrypt(inputText, "sha-1");
}
/**
* md5或者sha-1加密
*
* @param inputText
* 要加密的内容
* @param algorithmName
* 加密算法名称:md5或者sha-1,不区分大小写
* @return
*/
private static String encrypt(String inputText, String algorithmName) {
if (inputText == null || "".equals(inputText.trim())) {
throw new IllegalArgumentException("请输入要加密的内容");
}
if (algorithmName == null || "".equals(algorithmName.trim())) {
algorithmName = "md5";
}
String encryptText = null;
try {
MessageDigest m = MessageDigest.getInstance(algorithmName);
m.update(inputText.getBytes("UTF8"));
byte s[] = m.digest();
// m.digest(inputText.getBytes("UTF8"));
return hex(s);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encryptText;
}
/**
* 返回十六进制字符串
*
* @param arr
* @return
*/
private static String hex(byte[] arr) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; ++i) {
sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString();
}
}
分享到:
相关推荐
它支持多种密钥长度和块大小,Java中的`javax.crypto.Cipher`类提供了AES的加密和解密接口,如`Cipher.getInstance("AES/CBC/PKCS5Padding")`。AES加密通常需要一个密钥和一个初始化向量(IV),确保每次加密相同...
在本实验报告中,我们将深入探讨Java字符流的使用,特别是在文件操作中的应用。Java字符流主要用于处理基于Unicode编码的字符数据,它分为输入流(Reader)和输出流(Writer),用于读取和写入字符数据。 实验的...
JAVA字符串操作类CTool.java字符转换类,此类中收集Java编程中WEB开发常用到的一些工具。为避免生成此类的实例,构造方法被申明为private类型的。封装的功能:字符串从GBK编码转换为Unicode编码、对字符串进行md5...
在Java编程语言中,字符串加密是一项重要的安全技术,它用于保护数据的隐私和安全性。字符串加密通常涉及到将明文字符串转换成密文,这样未经授权的用户就无法理解数据的原始含义。下面我们将深入探讨Java中字符串...
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
本文将深入探讨“JAVA可逆带秘钥字符串加密算法”,这是一种允许数据在加密后仍能通过正确的密钥解密回原始形式的加密技术。 在Java中,最常见的可逆加密算法包括DES(Data Encryption Standard)、3DES(Triple ...
总的来说,Java字符串加密解密涉及到多个层面的知识,包括加密算法、密钥管理、安全协议等。理解和熟练掌握这些技术对于保障网络安全至关重要。在实际开发中,还需要关注加密算法的版本限制、密钥的安全存储以及法律...
- **自定义加密类**:可以根据项目需求自定义加密算法或策略。 #### 1.3 实现方式 该示例代码主要采用了DES(Data Encryption Standard)加密算法来实现字符串的加密与解密。 ### 2. DES 加密算法介绍 #### 2.1 ...
在Java中,我们可以使用`javax.crypto`包中的`Cipher`类来实现加密和解密操作。 1. **基于字符串的AES加密**: - 首先,需要将字符串转换为字节数组,可以使用UTF-8编码。 - 然后,创建一个`KeySpec`对象,例如`...
在Java中,可以使用`javax.crypto`包中的`Cipher`类来实现DES加密和解密。以下是一段简单的示例代码: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory...
java md5加密类,用于字符和数字加密 简单实用
在Java中,我们通常使用`java.security.MessageDigest`类来实现MD5加密。以下是一个简单的示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5...
Java字符串加密使用到的一个jar包 commons-lang3-3.1.jar下载 jar包含具体的类有 org.apache.commons.lang3.StringUtils org.apache.commons.lang3.ArrayUtils.class org.apache.commons.lang3.BitField.class org....
对一个字符串进行指定算法的加密后,得到其十六进制字符串
des是java开发中比较常见的加密方式,多用于加密要求不是很严格的地方,...将加密方式封装成一个工具类,便于使用,可指定密钥或使用默认密钥,可指定字符或使用默认字符,用法简单灵活,全文中文注释,易于读和修改。
Java字符串加密解密 Java字符串加密解密是指使用Java语言对字符串进行加密和解密操作的过程。在这个过程中,我们可以使用异或运算符来对字符串进行加密和解密。下面我们将详细介绍Java字符串加密解密的实现过程和...
在Java中,可以使用`java.net.URLEncoder.encode()`方法对加密字符串进行编码,解码则使用`java.net.URLDecoder.decode()`。 7. **异常处理**:在实际应用中,应更全面地处理可能抛出的异常,包括捕获并记录异常...
这是一个用Java编写的简易字符串加密文件,可以对你输入的任何字符串实现加密解密功能
Java字符串加密是信息安全领域中的一个重要话题,特别是在存储和传输敏感数据时。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转换为固定长度的摘要,通常是一个32位的十六...
整个加密过程在一个`MyRandom`类中通过线程的方式持续运行,并且每隔一秒输出当前时间及生成的加密字符串。这样设计的目的是模拟一个动态生成加密字符串的过程,适用于需要持续变化密钥的应用场景。 ```java public...