import java.security.MessageDigest;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class EncryptManager
{
public static byte[] TripleDES_CBC_Encrypt(byte[] sourceBuf, SecretKeySpec deskey, IvParameterSpec ivParam)
throws Exception
{
byte[] cipherByte;
Cipher encrypt = Cipher.getInstance("TripleDES/CBC/PKCS5Padding");
encrypt.init(Cipher.ENCRYPT_MODE, deskey, ivParam);
cipherByte = encrypt.doFinal(sourceBuf, 0, sourceBuf.length);
return cipherByte;
}
public static byte[] TripleDES_CBC_Decrypt(byte[] sourceBuf, SecretKeySpec deskey, IvParameterSpec ivParam)
throws Exception
{
byte[] cipherByte;
Cipher decrypt = Cipher.getInstance("TripleDES/CBC/PKCS5Padding");
decrypt.init(Cipher.DECRYPT_MODE, deskey, ivParam);
cipherByte = decrypt.doFinal(sourceBuf, 0, sourceBuf.length);
return cipherByte;
}
public static byte[] DES_CBC_Encrypt(byte[] sourceBuf, SecretKeySpec deskey, IvParameterSpec ivParam)
throws Exception
{
byte[] cipherByte;
Cipher encrypt = Cipher.getInstance("DES/CBC/PKCS5Padding");
encrypt.init(Cipher.ENCRYPT_MODE, deskey, ivParam);
cipherByte = encrypt.doFinal(sourceBuf, 0, sourceBuf.length);
return cipherByte;
}
public static byte[] DES_CBC_Decrypt(byte[] sourceBuf, SecretKeySpec deskey, IvParameterSpec ivParam)
throws Exception
{
byte[] cipherByte;
Cipher decrypt = Cipher.getInstance("DES/CBC/PKCS5Padding");
decrypt.init(Cipher.DECRYPT_MODE, deskey, ivParam);
cipherByte = decrypt.doFinal(sourceBuf, 0, sourceBuf.length);
return cipherByte;
}
public static byte[] DES_ECB_Encrypt(byte[] sourceBuf, SecretKeySpec deskey) throws Exception
{
byte[] cipherByte;
Cipher encrypt = Cipher.getInstance("DES");
encrypt.init(Cipher.ENCRYPT_MODE, deskey);
cipherByte = encrypt.doFinal(sourceBuf, 0, sourceBuf.length);
return cipherByte;
}
public static byte[] DES_ECB_Decrypt(byte[] sourceBuf, SecretKeySpec deskey) throws Exception
{
byte[] cipherByte;
Cipher decrypt = Cipher.getInstance("DES");
decrypt.init(Cipher.DECRYPT_MODE, deskey);
cipherByte = decrypt.doFinal(sourceBuf, 0, sourceBuf.length);
return cipherByte;
}
public static byte[] MD5Hash(byte[] buf, int offset, int length) throws Exception
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(buf, offset, length);
return md.digest();
}
public static String byte2hex(byte[] inStr)
{
String stmp;
StringBuffer out = new StringBuffer(inStr.length * 2);
for (int n = 0; n < inStr.length; n++)
{
stmp = Integer.toHexString(inStr[n] & 0xFF);
if (stmp.length() == 1)
{
out.append("0" + stmp);
}
else
{
out.append(stmp);
}
}
return out.toString();
}
public static byte[] addMD5(byte[] md5Byte, byte[] bodyByte)
{
int length = bodyByte.length + md5Byte.length;
byte[] resutlByte = new byte[length];
for (int i = 0; i < length; i++)
{
if (i < md5Byte.length)
{
resutlByte[i] = md5Byte[i];
}
else
{
resutlByte[i] = bodyByte[i - md5Byte.length];
}
}
return resutlByte;
}
}
分享到:
相关推荐
ARMv8架构作为ARM公司推出的全新64位处理器架构,它不仅延续了ARMv7架构的基础,还增添了对64位指令...通过本学习笔记,读者可以全面了解ARMv8架构的新特性和增强的功能,为进一步的技术研究和应用开发打下坚实的基础。
通信学习笔记作为知识的载体,帮助我们理解和掌握这些技术要点,并为未来的通信技术学习奠定坚实的基础。 总之,通信技术的学习不仅需要理解技术概念,还要关注技术发展所带来的变革与趋势。本份2023年通信学习笔记...
### 安卓逆向学习笔记之ART环境下DEX加载流程与通用脱壳点解析 #### 一、概述 本文档旨在深入探讨安卓应用在ART(Android Runtime)环境下的DEX文件加载流程,并结合具体案例分析常见的脱壳点。对于从事安卓逆向...
"华清嵌入式课程学习笔记"是一份针对嵌入式工程师的宝贵资料,涵盖了该领域的核心概念、技术和实践应用。下面将详细阐述嵌入式系统的相关知识点。 1. 嵌入式系统定义:嵌入式系统是指被设计用于执行特定任务的...
这篇“蓝牙学习笔记”可能涵盖了从基础概念到高级应用的各个方面,包括蓝牙的历史、工作原理、版本迭代、蓝牙协议栈以及实际应用等内容。 1. **蓝牙历史**:蓝牙技术始于1994年,由爱立信公司开发,旨在简化移动...
这些笔记将是你学习过程的重要参考资料,帮助你回顾和深化理解。 总的来说,Zigbee是一个强大且实用的无线通信技术,广泛应用于智能家居、工业自动化和环境监测等领域。通过不断实践和学习,你将能够熟练掌握Zigbee...
### ZigBee学习笔记知识点概览 #### 一、ZigBee简介及背景 - **定义**: ZigBee是一种短距离、低功耗的无线通信技术标准,它基于IEEE 802.15.4协议规范。该技术旨在为智能家居、工业控制等物联网应用场景提供一种...
### 网络工程师学习笔记知识点总结 #### 一、通信基本概念 1. **通信定义**:指站点之间的信息交换。 - **通路**:指两站点间实际连接的物理线路。 - **通态**:指通路的工作状态。 - **缺省**:通常指的是默认...
《AUTOSAR全面学习笔记》 AUTOSAR(AUTomotive Open System ARchitecture)是一种全球性的汽车软件架构标准,旨在提升汽车电子系统的模块化、复用性和可扩展性。本笔记将深入探讨AUTOSAR的各个方面,特别是针对AP...
3. **数据连接模块**:管理GSM网络的数据连接,支持GPRS(通用分组无线业务)和EDGE(增强数据速率GSM演进)等技术。开发者可以控制数据连接的建立、断开,以及查询网络状态。 4. **设备信息模块**:获取设备的相关...
### ARM学习笔记之嵌入式系统与Linux操作系统详解 #### 嵌入式系统的核心概念 嵌入式系统是指一种特定用途的计算机系统,它的设计和应用围绕着具体的应用需求展开,具有高度定制化的特点。具体来说,嵌入式系统...
### Python学习笔记知识点详解 #### 一、Python简介与特性 **Python语言**是一种现代的、面向对象的、解释型的脚本语言。它具备强大的功能性和通用性,支持多种编程范式,如面向对象、面向过程等。Python语言的...
本篇《CISP学习笔记》将梳理总结在学习过程中获得的重要知识点,为考生提供实际帮助,并对他们在网络安全工作中的实践应用给予理论支持。 首先,信息安全标准是构建网络安全防护体系的基石。在中国,信息安全标准...
通过对ARM SoC体系结构的学习,我们可以了解到这项技术是如何结合了高性能、低功耗以及广泛的软件兼容性等优势来满足当今多样化计算需求的。ARM SoC的设计理念和技术细节对于理解和开发基于ARM架构的产品至关重要,...
这包括身份和访问管理、加密技术、安全审计和风险评估。 8. **数据集成和互操作**(2分):数据集成处理来自不同源的数据,实现数据一致性,而互操作性确保不同系统间的数据交换。这可能涉及到ETL(提取、转换、...
Spring Security 是一个强大的安全框架,提供认证、授权和加密等功能,保护 Spring 应用免受常见的安全威胁。 以上就是 Spring 框架的基本介绍和一些关键知识点。学习 Spring,不仅可以提升 Java 开发的效率,还能...
[Trial version] 第5章 软件加密技术 [Trial version] 5.1 反调试技术(Anti-Debug) [Trial version] 5.1.1 句柄检测.htm [Trial version] 5.1.4 ICECream子类型.htm [Trial version] 5.1.5 判断NTICE服务是否...