import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.*;
public class EncryptData {
DESedeKeySpec spec;
SecretKeyFactory keyFactory;
SecretKey theKey;
Cipher cipher;
IvParameterSpec IvParameters;
public EncryptData() {
byte[] encryptKey;
try {
// 检测是否有 TripleDES 加密的供应程序
// 如无,明确地安装SunJCE 供应程序
try {
Cipher c = Cipher.getInstance("DESede");
} catch (Exception e) {
System.err.println("Installling SunJCE provider.");
Provider sunjce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunjce);
}
// 创建一个密钥
encryptKey = "This is a test DESede Key".getBytes();
// 为上一密钥创建一个指定的 DESSede key
spec = new DESedeKeySpec(encryptKey);
// 得到 DESSede keys
keyFactory = SecretKeyFactory.getInstance("DESede");
// 生成一个 DESede 密钥对象
theKey = keyFactory.generateSecret(spec);
// 创建一个 DESede 密码
cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
// 为 CBC 模式创建一个用于初始化的 vector 对象
IvParameters = new IvParameterSpec(new byte[] { 12, 34, 56, 78, 90, 87, 65, 43 });
} catch (Exception exc) {
// 记录加密或解密操作错误
}
}
private String encrypt(String password) {
String encrypted_password = null;
byte[] encrypted_pwd = null;
try {
// 以加密模式初始化密钥
cipher.init(Cipher.ENCRYPT_MODE, theKey, IvParameters);
// 加密前的密码(旧)
byte[] plainttext = password.getBytes();
// 加密密码
encrypted_pwd = cipher.doFinal(plainttext);
// 转成字符串,得到加密后的密码(新)
encrypted_password = new String(encrypted_pwd);
} catch (Exception ex) {
// 记录加密错误
}
StringBuffer tempString = new StringBuffer();
for (int i = 0; i < encrypted_pwd.length; i++) {
tempString.append(encrypted_pwd[i] + ",");
}
String aa = new String(tempString);
return aa;
}
private String decrypt(String spassword) {
String[] ss = spassword.split(",");
byte[] password = new byte[ss.length];
for (int i = 0; i < ss.length; i++) {
password[i] = (byte) (new Integer(ss[i]).intValue());
}
String decrypted_password = null;
try {
// 以解密模式初始化密钥
cipher.init(Cipher.DECRYPT_MODE, theKey, IvParameters);
// 构造解密前的密码
byte[] decryptedPassword = password;
// 解密密码
byte[] decrypted_pwd = cipher.doFinal(decryptedPassword);
// 得到结果
decrypted_password = new String(decrypted_pwd);
} catch (Exception ex) {
// 记录解密错误
}
return decrypted_password;
}
/**
* 加密算法
* @param password 未加密的密码
* @return 加密后的密码
*/
public static String s_encrypt(String password) {
String encrypted_pwd = null;
EncryptData encryptData = new EncryptData();
encrypted_pwd = encryptData.encrypt(password);
return encrypted_pwd;
}
/**
* 解密算法
* @param password 加过密的密码
* @return 解密后的密码
*/
public static String b_decrypt(String password) {
String decrypted_password = null;
EncryptData encryptData = new EncryptData();
decrypted_password = encryptData.decrypt(password);
return decrypted_password;
}
}
相关推荐
根据给定的文件信息,我们可以总结出以下关于“一个字符串加密解密类”的详细知识点: ### 一、类概述 该类提供了一种简单的方法来对字符串进行加密和解密操作,适用于保护重要的数据(例如密码)。通过使用UTF-8...
.net下C#数据库连接字符串在配置文件中的加密解密类
这个名为“php字符串加密解密的类”的工具提供了一种方法来处理敏感信息,确保它们在传输或存储时不会被未授权的用户访问。这里我们将深入探讨PHP中的字符串加密解密原理,以及base64_encode()函数在其中的作用。 ...
C# 字符串 加密解密 类 需要自定义8位ASCII密钥,如“12345678”
学习了C++中的字符串加密解密后,可以进一步研究其他加密算法,如AES、RSA等,或者了解非对称加密和哈希函数等信息安全相关的概念和技术。此外,也可以尝试将加密解密技术应用到实际项目中,如网络通信的安全传输、...
QT C++ AES字符串加密解密类库是一种在C++编程环境中使用QT框架实现的高级加密标准(AES)加密和解密工具。QT是一个流行的开源跨平台应用开发框架,广泛应用于桌面、移动和嵌入式系统。AES是目前广泛应用的对称加密...
js中对字符串加密解密算法
"EncryptTools 字符串 加密 解密 工具"是一个专为处理字符串加密和解密任务设计的实用程序。这个工具可能包含了多种加密算法,帮助用户对敏感的文本信息进行安全处理,防止未经授权的访问或窃取。 字符串加密是一种...
VBScript中的字符串加密解密函数 在VBScript(Visual Basic Script Edition)中,可以通过编写特定的函数来实现字符串的加密与解密操作。本例中提供的`encrypt`函数接受两个参数:`miyao`(密钥) 和 `stext`(待加密...
本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉KEY。应用场景是程序把需要关键信息加密后保存在配置文件中,防止被第三人打开配置文件而获取信息...
在IT行业中,字符串加密与解密是信息安全领域的重要组成部分,主要目的是保护数据的隐私和安全性。PowerBuilder(PB)是一种流行的编程环境,尤其在开发数据库应用程序时被广泛使用。在这个背景下,PB字符串加密和...
本资源提供了一套自编的字符串加密解密Demo,包含了源码,可以帮助开发者实现对重要信息的加密存储和安全传输。下面将详细介绍这套加密解密算法及其应用。 一、加密解密原理 加密是一种将明文转换为看似随机的不可...
8. **字符串加密解密案例**:在提供的压缩包文件“字符串加密解密案例”中,可能包含具体的编程实现,如Python的cryptography库、Java的Cipher类或者JavaScript的crypto模块等,展示了如何在实际项目中应用上述理论...
基于DES任意长度字符串的加密和解密,MFC界面
在这个“WinForm字符串加密解密小程序”中,我们主要探讨的是如何在Windows Forms环境下实现字符串的加密与解密功能。 首先,字符串加密是信息安全领域的一个关键概念,其目的是保护数据不被未经授权的人员读取或...
在IT领域,字符串加密解密是信息安全的重要组成部分,主要用于保护数据的隐私性和完整性。字符串加密是一种将可读的明文字符串转化为不可读的密文,防止未经授权的访问者获取信息。解密则是加密的逆过程,将密文恢复...
描述中提到的"C#对字符串加密解密dll源码"可能包含一个自定义的加密类库,这个库可能封装了加密和解密的逻辑,允许开发者通过简单调用方法并提供密钥来完成操作。在实际应用中,用户可能需要自定义密钥以增加安全性...
PHP字符串加密和解密,可以把字符串加密,还可以解密
一个简单的字符串加密解密算法,使用C#语言实现。。。
总之,MFC的`CString`字符串加密解密是软件开发中的一个重要环节,它涉及到数据安全和隐私保护。通过结合MFC与加密库,我们可以创建安全的字符串处理机制,确保敏感信息在传输和存储过程中的安全性。