针对字符串进行加密,直接上代码,注释能够说明一切
package com.augurit.util;
import java.security.*;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* 字符串加密对象
* @author administration
*/
public class StringEncryptionUtils {
private static final String PASSWORD_CRYPT_KEY = "GZ_AUGUR";
private final static String DES = "DES";
/**
* 加密
* @param sr 数据源
* @param key 密钥,长度必须是8的倍数
* @return 返回加密后的数据
* @throws Exception
*/
private static byte[] encrypt(byte[] src, byte[] key) throws Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂,然后用它把DESKeySpec转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance(DES);
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
// 现在,获取数据并加密
// 正式执行加密操作
return cipher.doFinal(src);
}
/**
* 解密
* @param src 数据源
* @param key 密钥,长度必须是8的倍数
* @return 返回解密后的原始数据
* @throws Exception
*/
private static byte[] decrypt(byte[] src, byte[] key) throws Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance(DES);
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
// 现在,获取数据并解密
// 正式执行解密操作
return cipher.doFinal(src);
}
/**
* 密码解密
* @param data
* @return
* @throws Exception
*/
public final static String decrypt(String data) {
try {
return new String(decrypt(hex2byte(data.getBytes()),PASSWORD_CRYPT_KEY.getBytes()));
} catch (Exception e) {
}
return null;
}
/**
* 密码加密
* @param password
* @return
* @throws Exception
*/
public final static String encrypt(String password) {
try {
return byte2hex(encrypt(password.getBytes(), PASSWORD_CRYPT_KEY.getBytes()));
} catch (Exception e) {
}
return null;
}
/**
* 二行制转字符串
* @param b
* @return
*/
private static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1){
hs = hs + "0" + stmp;
}else{
hs = hs + stmp;
}
}
return hs.toUpperCase();
}
private static byte[] hex2byte(byte[] b) {
if ((b.length % 2) != 0)
throw new IllegalArgumentException("长度不是偶数");
byte[] b2 = new byte[b.length / 2];
for (int n = 0; n < b.length; n += 2) {
String item = new String(b, n, 2);
b2[n / 2] = (byte) Integer.parseInt(item, 16);
}
return b2;
}
public static void main(String[] args) {
System.out.println("加密后的字符串是:" + new StringEncryptionUtils().encrypt("globle:8399"));
System.out.println("解密后的字符串是:" + new StringEncryptionUtils().decrypt("FB3B91D5A1726EC9AC2F9EA95277AA63"));
}
}
分享到:
相关推荐
用户先使用简单的加密算法对字符串进行加密,如果觉得还不够可以对加密之后的结果使用其他加密算法进行二次加密,当然也可以进行第三次加密。使用装饰模式设计该多重加密算法。要求画出类图,提供源码及运行结果。
在给定的标题和描述中提到的“文件加密算法,主要用来加密文本文件,对字符串进行加密”,这通常涉及到对文本内容的逐字节或字符的操作。对于文本文件,我们可以使用对称加密算法,如AES(高级加密标准)、DES(数据...
在Java中,对字符串进行加密和解密是软件开发中常见的需求,特别是在处理敏感信息时,如用户密码或网络传输的数据。这篇文档介绍了如何利用Java的加密库来实现这一目标。 首先,我们要理解密码学的基本概念。密码学...
总之,MFC的`CString`字符串加密解密是软件开发中的一个重要环节,它涉及到数据安全和隐私保护。通过结合MFC与加密库,我们可以创建安全的字符串处理机制,确保敏感信息在传输和存储过程中的安全性。
Java字符串加密解密是指使用Java语言对字符串进行加密和解密操作的过程。在这个过程中,我们可以使用异或运算符来对字符串进行加密和解密。下面我们将详细介绍Java字符串加密解密的实现过程和原理。 实现过程: ...
在这个场景中,我们将探讨如何使用jQuery结合MD5和SHA1算法进行字符串加密。 MD5(Message-Digest Algorithm 5)和SHA1(Secure Hash Algorithm 1)都是常见的哈希函数,它们可以将任意长度的数据转化为固定长度的...
对字符串进行加密 Console.WriteLine("请输入原字符串"); string str = Console.ReadLine(); Console.WriteLine("请输入加密字符串"); string str1 = Console.ReadLine(); string strNew = null; char ch; for...
3. **加密数据**:有了密钥后,可以调用` CryptEncrypt `函数,传入密钥句柄、原始字符串的二进制表示、以及是否是最后一个块等信息,将字符串加密为一串不可读的字节。 4. **释放资源**:完成加密后,记得释放`...
字符串加密通常涉及到对字符序列进行某种变换,使得原始信息难以被未经授权的人理解。这里,"C++字符串简单加密.doc"可能包含了一个DEMO,展示了如何使用基本的异或(XOR)加密算法对字符串进行加密。异或是一种二...
总结来说,`JAVA可逆带秘钥字符串加密算法`主要涉及到对称加密,特别是DES算法,用于对字符串进行安全保护。通过`DESUtil.java`这样的工具类,开发者可以方便地在Java程序中集成加密和解密功能,确保数据在传输和...
### 使用MD5与SHA算法对字符串加密的方法 #### 原理概述 无论是MD5还是SHA算法,其核心都是将输入的字符串通过一系列复杂的计算过程转换成一个固定长度的散列值。这个散列值具有以下特点: - **唯一性**:不同的...
在字符串加密中,我们可以用一个密钥与字符串的每个字符进行异或操作,得到加密后的字符串。解密时,再次使用相同的密钥与加密后的字符串进行异或,可以恢复原始字符串。 二、XOREncStr工具介绍 根据提供的文件名`...
字符串加密
总之,"汇编对字符串加密并用16进制显示"是一个涵盖多方面知识的主题,包括汇编语言基础、加密算法、数据转换以及系统接口的使用。掌握这些技能不仅可以增强你的编程能力,还能帮助你理解计算机底层运作的细节。在...
本篇将深入探讨字符串加密解密的实现方法,并以实际应用为例进行解析。 1. **字符串加密原理与方法** - **对称加密**:如DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption ...
以下是一段简单的C#代码示例,展示了如何使用SHA256类对字符串进行加密: ```csharp using System; using System.Text; using System.Security.Cryptography; public class Program { public static void Main() ...
在IT行业中,字符串加密解密是一项非常重要的技术,特别是在数据安全和隐私保护方面。"字符串加密解密jar包"是一个专门为处理字符串加密和解密任务而设计的Java应用程序集(jar包)。它允许用户对给定的字符串进行...
C#字符串加密解密函数是指使用C#语言编写的对字符串进行加密和解密的函数。这些函数通常用于保护敏感数据,防止未经授权的访问。 在C#中,对字符串进行加密和解密可以使用DESCryptoServiceProvider类,该类提供了...
DES(Data Encryption Standard)是对称加密算法的一种,它在C#编程中也被广泛应用于字符串加密。本实例将深入讲解如何在C#中使用DES对字符串进行加密和解密操作。 DES是一种块加密算法,它以64位为一组进行加密,...
总之,这个VB字符串加密解密软件及其源代码是一个很好的学习资源,不仅能够帮助你理解加密技术,还能加深对VB编程的理解。在探索过程中,你可能会遇到一些挑战,但克服它们将使你的技能更上一层楼。