如此用法:传一个字符串进去
password = password.toLowerCase();
String _password = Encrypter.encrypter(password);
_password = TextUtils.isEmpty(_password) ? "" : _password;
Encrypter此类:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
public class Encrypter {
public static final String SECRET_KEY = "PkmJygVfrDxsDeeD";
/*
* Encrypter method
*
* @param password, public text need to be encrypted
*
* @return encrypt text
*/
public static String encrypter(String str) {
String string = null;
try {
string = AES128_ECB_HEX.encode(str.getBytes(), 0, SECRET_KEY.getBytes(), 0);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return string;
}
/*
* Decrypter method
*
* @param password, secret text need to be decrypted
*
* @return public text
*/
public static String decrypter(String str) {
String string = "";
try {
string = new String(AES128_ECB_HEX.decode(str, SECRET_KEY.getBytes(), 0));
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return string;
}
}
AES128_ECB_HEX此类:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
public final class AES128_ECB_HEX {
/*
* encode method
*
* @param btPlain, public text need to be encrypted
*
* @param iLen, the length of public text锟斤拷it equals the length of btPlain
* when is 0
*
* @param btKey, secret key
*
* @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
* is 0
*/
public static String encode(byte[] btPlain, int iLen, byte[] btKey, int iKeyLen)
throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException {
return HEX.encode(AES128_ECB.encode(btPlain, iLen, btKey, iKeyLen), 0);
}
/*
* decode method
*
* @param stHex, hex cryptograph
*
* @param btKey, secret key
*
* @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
* is 0
*/
public static byte[] decode(String stHex, byte[] btKey, int iKeyLen)
throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException {
return AES128_ECB.decode(HEX.decode(stHex), 0, btKey, iKeyLen);
}
private AES128_ECB_HEX() {}
}
此类HEX:
public class HEX {
/*
* encode method
*
* @param btData, public text need to be hex
*
* @param iLen, the length of public text锟斤拷it equals the length of btData
* when is 0
*/
public static String encode(byte[] btData, int iLen) {
String l_stTmp = null;
StringBuffer l_stHex = new StringBuffer();
int ii;
if (btData == null) {
return null;
}
if ((iLen <= 0) || (iLen > btData.length)) {
iLen = btData.length;
}
for (ii = 0; ii < iLen; ii++) {
l_stTmp = Integer.toHexString(btData[ii] & 0xFF);
if (l_stTmp.length() == 1) {
l_stTmp = "0" + l_stTmp;
}
l_stHex.append(l_stTmp.toUpperCase());
}
return l_stHex.toString();
}
/*
* decode method
*
* @return null if conversion failed
*/
public static byte[] decode(String stData) {
byte[] l_btData = null;
byte[] l_btTmp = null;
String l_stData = null;
int l_iLen;
int ii;
int jj;
int kk;
char l_cTmp;
if (stData == null) {
return null;
}
l_iLen = stData.length();
if ((l_iLen % 2) != 0) {
return null;
}
l_stData = stData.toUpperCase();
for (ii = 0; ii < l_iLen; ii++) {
l_cTmp = l_stData.charAt(ii);
if (!((('0' <= l_cTmp) && (l_cTmp <= '9')) || (('A' <= l_cTmp) && (l_cTmp <= 'F')))) {
return null;
}
}
l_iLen /= 2;
l_btData = new byte[l_iLen];
l_btTmp = new byte[2];
for (ii = 0, jj = 0, kk = 0; ii < l_iLen; ii++) {
l_btTmp[0] = (byte) (l_stData.charAt(jj++));
l_btTmp[1] = (byte) (l_stData.charAt(jj++));
for (kk = 0; kk < 2; kk++) {
if (('A' <= l_btTmp[kk]) && (l_btTmp[kk] <= 'F')) {
l_btTmp[kk] -= 55;
} else {
l_btTmp[kk] -= 48;
}
}
l_btData[ii] = (byte) ((l_btTmp[0] << 4) | l_btTmp[1]);
}
return l_btData;
}
private HEX() {}
}
此类:AES128_ECB
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
public final class AES128_ECB {
private static final int AES_128_KEY_LEN = 16; // 128 bit
/*
* encode method
*
* @param btPlain, public text need to be encrypted
*
* @param iLen, the length of public text锟斤拷it equals the length of btPlain
* when is 0
*
* @param btKey, secret key
*
* @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
* is 0
*/
public static byte[] encode(byte[] btPlain, int iLen, byte[] btKey, int iKeyLen)
throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException {
return encode_decode(btPlain, iLen, btKey, iKeyLen, 0);
}
/*
* decode method
*
* @param btCipher, secret text
*
* @param iLen, the length of secret text锟斤拷it equals the length of btCipher
* when is 0
*
* @param btKey, secret key
*
* @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
* is 0
*/
public static byte[] decode(byte[] btCipher, int iLen, byte[] btKey, int iKeyLen)
throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException {
return encode_decode(btCipher, iLen, btKey, iKeyLen, 1);
}
private static byte[] encode_decode(byte[] btData, int iLen, byte[] btKey, int iKeyLen,
int iFlag) throws BadPaddingException, IllegalBlockSizeException,
InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException {
int ii;
int l_iMode;
byte[] l_btKey = null;
Cipher l_oCipher = null;
if ((btData == null) || (btKey == null)) {
return null;
}
if ((iLen <= 0) || (iLen > btData.length)) {
iLen = btData.length;
}
if ((iKeyLen <= 0) || (iKeyLen > btKey.length)) {
iKeyLen = btKey.length;
}
if (iKeyLen > AES_128_KEY_LEN) {
// 16 Bytes
iKeyLen = AES_128_KEY_LEN; // 16 Bytes
}
l_btKey = new byte[AES_128_KEY_LEN]; // 16 Bytes
for (ii = 0; ii < AES_128_KEY_LEN; ii++) {
l_btKey[ii] = (byte) 0x00;
}
for (ii = 0; ii < iKeyLen; ii++) {
l_btKey[ii] = btKey[ii];
}
l_oCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
if (iFlag == 0) {
l_iMode = Cipher.ENCRYPT_MODE;
} else {
l_iMode = Cipher.DECRYPT_MODE;
}
l_oCipher.init(l_iMode, new SecretKeySpec(l_btKey, 0, AES_128_KEY_LEN, "AES"));
return l_oCipher.doFinal(btData, 0, iLen);
}
private AES128_ECB() {}
}
解密
password = Encrypter.decrypter(password);
以上所有都是加解密用到的类,自己也不懂很多代码为什么这么写
分享到:
相关推荐
Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...
前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密
Java 加解密技术系列之 HMAC 知识点详解 HMAC(Hash-based Message Authentication Code,散列消息鉴别码)是一种用于验证数据完整性和来源安全性的密码学技术。它结合了哈希函数和密钥,确保只有拥有特定密钥的...
BouncyCastle,又称BC,是一个开源的Java安全包,提供了广泛的密码学功能,包括但不限于加解密、数字签名、证书管理以及哈希算法。标题提到的"BouncyCastle加解密包15on-1.60"指的是该库的一个特定版本,版本号为...
7. **加解密接口**:JCT可能提供了一套统一的API,使得开发者能够方便地调用各种加密算法,而无需深入了解底层实现细节。 8. **文档和源代码**:压缩包中的`jct_doc.zip`可能是JCT工具包的API文档,对于理解和使用...
在Java编程语言中,加密和解密是网络安全和数据保护的重要组成部分。本教程"JAVA加密解密-3"聚焦于如何在Java环境中实现文件的加密和解密功能。以下是一些核心知识点: 1. **加密的基本概念**:加密是将明文数据...
在Java中,可以利用`javax.crypto`包下的类和接口实现上述算法的加密和解密功能,例如使用`Cipher`类进行加解密操作,`KeyGenerator`和`KeyPairGenerator`类用于生成密钥。 #### 结语 加密技术是维护网络安全的...
Java加密解密技术在软件开发中扮演着至关重要的角色,特别是在数据安全领域。3DES(Triple Data Encryption Standard)是一种常见的加密算法,它基于DES(Data Encryption Standard)并对其进行了加强,提高了安全性...
Java加密解密程序是软件开发中的一个重要领域,主要用于保护数据的安全性和隐私性。在这个特定的案例中,我们讨论的是一个基于MyEclipse开发的Java应用程序,它实现了凯撒加密法,这是一种古老但基础的加密技术。...
Java加密解密是信息安全领域中的一个关键话题,特别是在软件开发中,它对于保护敏感数据、实现安全通信至关重要。Java提供了一系列强大的加密库和API,使得开发者可以方便地进行数据加密和解密操作。本项目提供的...
一段java语言加密和解密的代码
在Java中,加密和解密操作主要通过`javax.crypto`包提供的类和接口来实现,例如`Cipher`类用于执行加解密操作,`KeyGenerator`用于生成密钥,`SecretKeySpec`和`PKey`(PublicKey, PrivateKey)用于管理密钥等。...
在Java编程环境中,创建一个能够加密和解密ZIP压缩包的项目是一项常见的需求,尤其是在处理敏感数据时。本文将深入探讨如何使用Java实现这一功能,同时也会提及与ActionScript 3(AS3)进行加密解密的相关知识。 ...
在IT行业中,加密和解密是信息安全领域的重要组成部分,特别是在Java编程中。本文将深入探讨Java中的加密解密技术,并结合提供的资源进行分析。 首先,标题"JAVA加密解密"表明我们将关注Java语言中用于保护数据隐私...
这些算法可以用于对数据进行加解密,确保数据在传输过程中的安全性。 2. **C/C++加密解密**:C和C++同样可以实现加密解密功能,通常通过调用操作系统提供的API或者使用开源库,如OpenSSL。开发者需要理解基本的加密...
在IT行业中,加解密是信息安全领域至...综上所述,这个Java加解密程序涉及到了密码学的基础理论、Java的加密API使用、密钥管理以及安全实践。通过分析和理解这个程序,开发者可以增强在实际项目中应用加密技术的能力。
直接在cmd环境 java -jar encrypt-decrypt.jar 即可运行。。。。。。。。。。。。。。。。。。
这个软件可以根据一串密码加密原文,生成加密后的16进制密文。没有密文和密码就无法还原原文。
Java加密解密是信息安全领域的重要组成部分,用于保护数据的安全性和隐私。在Java中,我们可以使用多种加密算法来实现数据的加密和解密。本篇将详细介绍几种常见的加密算法及其在Java中的应用,包括DES、RSA以及非...