package com.lot.common.util;
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.commons.codec.binary.Hex;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* <p>
* Title:
* </p>
* <p>
* Description: 采用AES负责字符串的加密与解密
* </p>
* <p>
* Copyright: Copyright (c) 2011 版权
* </p>
* <p>
* Company:
* </p>
*
* @author kevin
* @version V1.0
* @date 2011-5-27上午10:57:33
*/
public class SecUtil {
private static final Log logger = LogFactory.getLog(SecUtil.class);
/**
* 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) throws Exception {
BufferedReader reader;
String input;
int i = 0;
try {
String st = "";
System.out.println("AES加密与解密操作:");
System.out.println("\"E\":加密 \t\"D\":解密\t\t\"Q\":退出");
do{
if("".equals(st)) {
System.out.println("请输入操作代码:");
}
reader = new BufferedReader(new InputStreamReader(System.in));
st = reader.readLine();
if("E".equalsIgnoreCase(st)) {
System.out.println("请输入待加密字符串:");
st = reader.readLine();
if(!"".equals(st.trim())) {
System.out.println("加密前:" + st.trim());
System.out.println("加密后:" + encrypt(st.trim()) + "\n\n");
}
st = "";
}else if("D".equalsIgnoreCase(st)) {
System.out.println("请输入待解密字符串:");
st = reader.readLine();
if(!"".equals(st.trim())) {
System.out.println("解密前:" + st.trim());
System.out.println("解密后:" + decrypt(st.trim()) + "\n\n");
}
st = "";
}
} while(!st.equalsIgnoreCase("Q"));
} catch (Exception e) {
logger.error(StringHandleUtils.getExceptionInfo(e));
}
}
/**
*
* @author: kevin
* @Title encrypt
* @Time: 2011-5-27上午10:57:56
* @Description: 加密
* @return: String
* @throws:
* @param value
* @return
*/
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(StringHandleUtils.getExceptionInfo(e));
}
return s;
}
/**
*
* @author: kevin
* @Title decrypt
* @Time: 2011-5-27上午10:58:09
* @Description: 解密
* @return: String
* @throws:
* @param value
* @return
*/
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(StringHandleUtils.getExceptionInfo(e));
}
return s;
}
/**
*
* @author: kevin
* @Title initCipher
* @Time: 2011-5-27上午10:58:47
* @Description: 初始化密码
* @return: Cipher
* @throws:
* @param mode
* @return
* @throws NoSuchAlgorithmException
* @throws NoSuchPaddingException
* @throws InvalidKeyException
*/
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;
}
}
分享到:
相关推荐
"加密和解密文件"的主题涉及到信息安全的核心技术,它确保了数据在未经授权的情况下无法被访问或理解。这里的描述提到这是一个带有图形用户界面(GUI)的工具,这使得用户能够更加直观和便捷地操作加密和解密过程,...
在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 首先,让我们了解一下请求参数的加密和解密。为了...
在IT领域,加密和解密是信息安全的重要组成部分,主要用于保护数据的隐私性和完整性。本文将深入探讨加密和解密的基本概念、常用算法以及...总的来说,理解和掌握加密解密技术对于保障网络安全和个人隐私具有重要意义。
C#加密和解密C#加密和解密C#加密和解密C#加密和解密
本文将详细讨论如何使用自编的加密解密DLL,并结合提供的StrEntry.txt文件,探讨可能涉及的加密算法和实现细节。 首先,加密DLL通常包含了一系列的函数接口,这些接口可以被其他应用程序调用来执行加密和解密操作。...
在加密和解密过程中,代码使用了多个`if`语句来实现字符替换,这些语句根据字符的 ASCII 码值来确定加密或解密的规则。 结论 凯撒密码是一种古典的加密算法,它的加密和解密过程都可以使用C语言来实现。通过分析...
五、加密解密的安全性考虑 尽管加密技术能提供良好的数据保护,但也存在安全隐患,如密钥管理不当、算法漏洞和侧信道攻击等。因此,使用强密码、定期更换密钥、更新加密算法版本以及遵循安全实践至关重要。 总结来...
上述代码是一个Java小工具,名为 "TextEncryptor",它提供了文本加密和解密的功能。用户可以使用指定的密钥对文本进行加密,然后再将加密后的文本解密为原始文本。该工具使用DES加密算法,用户可以在 `main` 方法中...
方便的进行文件的加密和解密方便的进行文件的加密和解密方便的进行文件的加密和解密
"Android 实现视频的加密和解密(使用 AES)" Android 平台上的视频加密和解密是非常重要的安全机制,以防止视频内容被非法访问和盗用。在本文中,我们将介绍如何使用 AES 算法在 Android 平台上实现视频的加密和...
本文将深入探讨RSA加密和解密的基础知识以及如何在Unity中实现这一功能。 首先,RSA加密的核心原理是基于大整数因子分解的困难性。它生成一对密钥:公钥和私钥。公钥可以公开,用于加密;而私钥必须保密,用于解密...
在ABAP编程中,加密和解密是两个关键的安全操作,用于保护敏感数据不被未经授权的用户访问。本文将深入探讨ABAP环境下的加密和...通过理解和掌握这些ABAP加密解密技术,你可以为企业的信息系统构建起坚实的安全屏障。
python凯撒密码加密 凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip凯撒密码加密和解密python实现源码.zip...
在Java中实现AES(Advanced Encryption Standard)加密和解密算法主要涉及到对称密钥加密技术。AES算法是一种块密码,采用固定大小的128位(16字节)块进行加密和解密,支持128、192和256位的密钥长度。在给定的代码...
在C#编程环境中,处理XML文件的加密和解密是一项重要的任务,特别是在处理敏感数据时。XML文件因为其结构清晰、易于解析而被广泛应用,但同时也需要妥善保护以防止未授权访问。以下是对C#中XML文件加密和解密的详细...
VB090610-简单加密和解密可能是一个教学资源,涵盖了加密解密的基础知识,可能包括简单的加密算法实现,例如基于位操作的简单加密,或者使用VB(Visual Basic)编程语言编写的加密解密示例。学习这部分内容有助于...
在C++编程环境中,文件加密和解密是保护数据安全的重要技术。这涉及到对文件内容进行编码,使得未经授权的用户无法轻易访问或篡改其中的信息。以下是对标题和描述中涉及的知识点的详细说明: 1. **加密算法基础**:...
在.NET中,加密解密算法主要分为两大类:对称加密算法和非对称加密算法。 对称加密算法使用相同的密钥进行加密和解密操作。这种算法的特点是速度快,适用于大量数据的加密。典型的对称加密算法包括DES(Data ...
CAD VBA DVB文件加密和解密 替换 \Program Files\Common Files\Microsoft Shared\VBA\VBA6 下的同名文件.在VBA中提示输入密码时,可输入任何密码。 可以解决所有VBA工程的密码问题
在IT行业中,字符串加密与解密是信息安全领域的重要组成部分,主要目的是保护数据的隐私和安全性。PowerBuilder(PB)是一种流行的编程环境,尤其在开发数据库应用程序时被广泛使用。在这个背景下,PB字符串加密和...