java 简单的对称加密解密,加密后无特殊字符串
程序员文章站
2024-03-14 17:31:40
...
代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import org.apache.log4j.Logger;
import org.apache.commons.codec.binary.Hex;
/**
* @ClassName: SecUtil
* @Description: 加密 解密 数据库信息
* @author lhy
* @date 2018年6月6日 上午9:36:23
* @version V1.0
*/
public class SecUtil {
private static final Logger logger = Logger.getLogger(SecUtil.class.getName());
/**
* 自定义 KEY
*/
private static byte[] keybytes = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x50,
0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 };
public static void main(String[] args) {
BufferedReader reader;
try {
String st = "";
do{
if("".equals(st)) {
logger.info("AES加密与解密操作:");
logger.info("\"E\":加密 \t\"D\":解密\t\t\"Q\":退出");
logger.info("请输入操作代码:");
}
reader = new BufferedReader(new InputStreamReader(System.in));
st = reader.readLine();
if("E".equalsIgnoreCase(st)) {
logger.info("请输入待加密字符串:");
st = reader.readLine();
if(!"".equals(st.trim())) {
logger.info("加密前:" + st.trim());
logger.info("加密后:" + encrypt(st.trim()) + "\n\n");
}
st = "";
}else if("D".equalsIgnoreCase(st)) {
logger.info("请输入待解密字符串:");
st = reader.readLine();
if(!"".equals(st.trim())) {
logger.info("解密前:" + st.trim());
logger.info("解密后:" + decrypt(st.trim()) + "\n\n");
}
st = "";
}
} while(!st.equalsIgnoreCase("Q"));
} catch (Exception e) {
logger.error(e);
}
}
/**
* @Title: encrypt
* @author yunlin.liu
* @Description: 加密
* @param @param value
* @param @return 设定文件
* @return String 返回类型
* @throws
*/
public static String encrypt(String value) {
String s = null;
int mode = Cipher.ENCRYPT_MODE;
try {
Cipher cipher = initCipher(mode);
byte[] outBytes = cipher.doFinal(value.getBytes());
s = String.valueOf(Hex.encodeHex(outBytes));
} catch (Exception e) {
logger.error(e);
}
return s;
}
/**
* @Title: decrypt
* @author yunlin.liu
* @Description: 解密
* @param @param value
* @param @return 设定文件
* @return String 返回类型
* @throws
*/
public static String decrypt(String value) {
String s = null;
int mode = Cipher.DECRYPT_MODE;
try {
Cipher cipher = initCipher(mode);
byte[] outBytes = cipher
.doFinal(Hex.decodeHex(value.toCharArray()));
s = new String(outBytes);
} catch (Exception e) {
logger.error(e);
}
return s;
}
/**
* @Title: initCipher
* @author yunlin.liu
* @Description: 初始化密码
* @param @param mode
* @param @return
* @param @throws NoSuchAlgorithmException
* @param @throws NoSuchPaddingException
* @param @throws InvalidKeyException 设定文件
* @return Cipher 返回类型
* @throws
*/
private static Cipher initCipher(int mode) throws NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
Key key = new SecretKeySpec(keybytes, "AES");
cipher.init(mode, key);
return cipher;
}
}
原文:E:\ketpTemp\2019-05-30\e8696d9b9af05b81510c1e80f96a8658.pdf
加密后:
ab06b8f30d1079aec25fafe136bb6a8282c417c5930d6939f6e7089cd9943e215d5f2add64140a4e68d9d76da5de12caa278e6833185db484fbd00ddffda0781
原文:https://blog.csdn.net/xiangbudao8/article/details/80811564
上一篇: DES 加密解密字符串
下一篇: 简单的字符串加密和解密