`
lxz8157
  • 浏览: 35886 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

通用加密技术学习笔记

阅读更多
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架构与指令集.学习笔记

    ARMv8架构作为ARM公司推出的全新64位处理器架构,它不仅延续了ARMv7架构的基础,还增添了对64位指令...通过本学习笔记,读者可以全面了解ARMv8架构的新特性和增强的功能,为进一步的技术研究和应用开发打下坚实的基础。

    安卓逆向学习笔记之ART下dex加载流程和通用脱壳点.docx

    ### 安卓逆向学习笔记之ART环境下DEX加载流程与通用脱壳点解析 #### 一、概述 本文档旨在深入探讨安卓应用在ART(Android Runtime)环境下的DEX文件加载流程,并结合具体案例分析常见的脱壳点。对于从事安卓逆向...

    华清嵌入式课程学习笔记

    "华清嵌入式课程学习笔记"是一份针对嵌入式工程师的宝贵资料,涵盖了该领域的核心概念、技术和实践应用。下面将详细阐述嵌入式系统的相关知识点。 1. 嵌入式系统定义:嵌入式系统是指被设计用于执行特定任务的...

    蓝牙学习笔记

    这篇“蓝牙学习笔记”可能涵盖了从基础概念到高级应用的各个方面,包括蓝牙的历史、工作原理、版本迭代、蓝牙协议栈以及实际应用等内容。 1. **蓝牙历史**:蓝牙技术始于1994年,由爱立信公司开发,旨在简化移动...

    zigbee基础实验学习笔记

    这些笔记将是你学习过程的重要参考资料,帮助你回顾和深化理解。 总的来说,Zigbee是一个强大且实用的无线通信技术,广泛应用于智能家居、工业自动化和环境监测等领域。通过不断实践和学习,你将能够熟练掌握Zigbee...

    ZigBee学习笔记.pdf

    ### ZigBee学习笔记知识点概览 #### 一、ZigBee简介及背景 - **定义**: ZigBee是一种短距离、低功耗的无线通信技术标准,它基于IEEE 802.15.4协议规范。该技术旨在为智能家居、工业控制等物联网应用场景提供一种...

    网络工程师学习笔记

    ### 网络工程师学习笔记知识点总结 #### 一、通信基本概念 1. **通信定义**:指站点之间的信息交换。 - **通路**:指两站点间实际连接的物理线路。 - **通态**:指通路的工作状态。 - **缺省**:通常指的是默认...

    autosar全面学习笔记.docx

    《AUTOSAR全面学习笔记》 AUTOSAR(AUTomotive Open System ARchitecture)是一种全球性的汽车软件架构标准,旨在提升汽车电子系统的模块化、复用性和可扩展性。本笔记将深入探讨AUTOSAR的各个方面,特别是针对AP...

    Comm2.0API学习笔记 打包的资料2.17更新

    3. **数据连接模块**:管理GSM网络的数据连接,支持GPRS(通用分组无线业务)和EDGE(增强数据速率GSM演进)等技术。开发者可以控制数据连接的建立、断开,以及查询网络状态。 4. **设备信息模块**:获取设备的相关...

    ARM学习笔记

    ### ARM学习笔记之嵌入式系统与Linux操作系统详解 #### 嵌入式系统的核心概念 嵌入式系统是指一种特定用途的计算机系统,它的设计和应用围绕着具体的应用需求展开,具有高度定制化的特点。具体来说,嵌入式系统...

    Python学习笔记

    ### Python学习笔记知识点详解 #### 一、Python简介与特性 **Python语言**是一种现代的、面向对象的、解释型的脚本语言。它具备强大的功能性和通用性,支持多种编程范式,如面向对象、面向过程等。Python语言的...

    《ARM SoC体系结构》学习笔记[中英对照]

    通过对ARM SoC体系结构的学习,我们可以了解到这项技术是如何结合了高性能、低功耗以及广泛的软件兼容性等优势来满足当今多样化计算需求的。ARM SoC的设计理念和技术细节对于理解和开发基于ARM架构的产品至关重要,...

    DAMA-CDGA认证考试之DMBOK2.0学习笔记.pdf

    这包括身份和访问管理、加密技术、安全审计和风险评估。 8. **数据集成和互操作**(2分):数据集成处理来自不同源的数据,实现数据一致性,而互操作性确保不同系统间的数据交换。这可能涉及到ETL(提取、转换、...

    Spring 学习笔记

    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服务是否...

    天天生鲜项目笔记.docx

    ### 天天生鲜项目知识点概览 #### 一、项目架构 在天天生鲜项目中,主要采用Django框架进行开发。...通过上述知识点的学习,不仅可以深入了解Django框架的应用实践,还能掌握电商网站开发的关键技术和最佳实践。

    bigdata笔记1

    "bigdata笔记1"可能包含的是对大数据基础知识、主要技术框架及其应用的概述。以下是一些可能涵盖的重要知识点: 1. **大数据定义**:大数据不仅仅是数据的量大,它还包括数据的多样性、速度和价值。大数据的4V特性...

Global site tag (gtag.js) - Google Analytics