`
dengyin2000
  • 浏览: 1230348 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

可以用在android的中Des 64位加密解密算法。

阅读更多
package com.itaoo.utils;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.*;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class DESCoder {
    // a weak key

    private static String encoding = "UTF-8";
    // 密钥
    private String sKey = "";


    public DESCoder(String sKey) {
        this.sKey = sKey;
    }

    /**
     * 加密字符串
     */
    public String ebotongEncrypto(String str) {
        String result = str;
        if (str != null && str.length() > 0) {
            try {
                byte[] encodeByte = symmetricEncrypto(str.getBytes(encoding));
                result = Base64.encode(encodeByte);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 解密字符串
     */
    public String ebotongDecrypto(String str) {
        String result = str;
        if (str != null && str.length() > 0) {
            try {
                byte[] encodeByte = Base64.decode(str);

                byte[] decoder = symmetricDecrypto(encodeByte);
                result = new String(decoder, encoding);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }


    /**
     * 加密byte[]
     */
    public byte[] ebotongEncrypto(byte[] str) {
        byte[] result = null;
        if (str != null && str.length > 0) {
            try {
                byte[] encodeByte = symmetricEncrypto(str);
                result = Base64.encode(encodeByte).getBytes();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 解密byte[]
     */
    public byte[] ebotongDecrypto(byte[] str) {
        byte[] result = null;
        if (str != null && str.length > 0) {
            try {

                byte[] encodeByte = Base64.decode(new String(str, encoding));
                //byte[] encodeByte = base64decoder.decodeBuffer(new String(str));
                byte[] decoder = symmetricDecrypto(encodeByte);
                result = new String(decoder).getBytes(encoding);
                result = new String(decoder).getBytes();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }


    /**
     * 对称加密字节数组并返回
     *
     * @param byteSource 需要加密的数据
     * @return           经过加密的数据
     * @throws Exception
     */
    public byte[] symmetricEncrypto(byte[] byteSource) throws Exception {
        try {
            int mode = Cipher.ENCRYPT_MODE;
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            byte[] keyData = sKey.getBytes();
            DESKeySpec keySpec = new DESKeySpec(keyData);
            Key key = keyFactory.generateSecret(keySpec);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(mode, key);

            byte[] result = cipher.doFinal(byteSource);
            return result;
        } catch (Exception e) {
            throw e;
        } finally {
        }
    }

    /**
     * 对称解密字节数组并返回
     *
     * @param byteSource 需要解密的数据
     * @return           经过解密的数据
     * @throws Exception
     */
    public byte[] symmetricDecrypto(byte[] byteSource) throws Exception {
        try {
            int mode = Cipher.DECRYPT_MODE;
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            byte[] keyData = sKey.getBytes();
            DESKeySpec keySpec = new DESKeySpec(keyData);
            Key key = keyFactory.generateSecret(keySpec);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(mode, key);
            byte[] result = cipher.doFinal(byteSource);
            return result;
        } catch (Exception e) {
            throw e;
        } finally {

        }
    }

    /**
     * 散列算法
     *
     * @param byteSource
     *            需要散列计算的数据
     * @return 经过散列计算的数据
     * @throws Exception
     */
    public static byte[] hashMethod(byte[] byteSource) throws Exception {
        try {
            MessageDigest currentAlgorithm = MessageDigest.getInstance("SHA-1");
            currentAlgorithm.reset();
            currentAlgorithm.update(byteSource);
            return currentAlgorithm.digest();
        } catch (Exception e) {
            throw e;
        }
    }


    /**
     * 对文件srcFile进行加密输出到文件distFile
     * @param srcFile 明文文件
     * @param distFile 加密后的文件
     * @throws Exception
     */
    public void EncryptFile(String srcFile,String distFile) throws Exception{

        InputStream  is=null;
        OutputStream out  = null;
        CipherInputStream cis =null;
        try {
            int mode = Cipher.ENCRYPT_MODE;
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            byte[] keyData = sKey.getBytes();
            DESKeySpec keySpec = new DESKeySpec(keyData);
            Key key = keyFactory.generateSecret(keySpec);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(mode, key);
            is= new FileInputStream(srcFile);
            out  = new FileOutputStream(distFile);
            cis = new CipherInputStream(is,cipher);
            byte[] buffer = new byte[1024];
            int r;
            while((r=cis.read(buffer))>0){
                out.write(buffer, 0, r);
            }
        } catch (Exception e) {
            throw e;
        } finally {
            cis.close();
            is.close();
            out.close();
        }
    }

    /**
     * 解密文件srcFile到目标文件distFile
     * @param srcFile 密文文件
     * @param distFile 解密后的文件
     * @throws Exception
     */
    public void DecryptFile(String srcFile,String distFile) throws Exception{

        InputStream  is=null;
        OutputStream out  = null;
        CipherOutputStream cos =null;
        try {
            int mode = Cipher.DECRYPT_MODE;
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            byte[] keyData = sKey.getBytes();
            DESKeySpec keySpec = new DESKeySpec(keyData);
            Key key = keyFactory.generateSecret(keySpec);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(mode, key);
            byte[] buffer = new byte[1024];
            is= new FileInputStream(srcFile);
            out  = new FileOutputStream(distFile);
            cos = new CipherOutputStream(out,cipher);

            int r;
            while((r=is.read(buffer))>=0){
                cos.write(buffer, 0, r);
            }

        } catch (Exception e) {
            throw e;
        } finally {
            cos.close();
            is.close();
            out.close();
        }
    }


    /**
     * 对文件进行加密64位编码
     * @param srcFile 源文件
     * @param distFile 目标文件
     */
    public void  BASE64EncoderFile(String srcFile,String distFile){
        InputStream inputStream =null;
        OutputStream out  = null;
        try {
            inputStream = new FileInputStream(srcFile);

            out  = new FileOutputStream(distFile);
            byte[] buffer = new byte[1024];
            while(inputStream.read(buffer)>0){
                out.write(ebotongEncrypto(buffer));
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                out.close();
                inputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }


    }

    /**
     * 对文件进行解密64位解码
     * @param srcFile 源文件
     * @param distFile 目标文件
     */
    public void BASE64DecoderFile(String srcFile,String distFile){
        InputStream inputStream =null;
        OutputStream out  = null;
        try {
            inputStream = new FileInputStream(srcFile);

            out  = new FileOutputStream(distFile);
            byte[] buffer = new byte[1412];

            while(inputStream.read(buffer)>0){
                out.write(ebotongDecrypto(buffer));
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                out.close();
                inputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

}
分享到:
评论

相关推荐

    C语言实现DES加密解密算法

    DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...

    DES算法 加密算法解密算法

    DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...

    VB实现DES加密解密算法,vb加密和解密,VBA

    这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....

    用 MFC 实现 DES 加密解密算法

    本文将深入探讨如何使用MFC(Microsoft Foundation Classes)库实现DES(Data Encryption Standard)加密解密算法,以及如何支持文件的打开和保存操作。 DES是一种对称加密算法,由IBM在1970年代开发,并在1977年被...

    DES加密解密算法 C语言源代码

    这篇C语言源代码实现了DES加密解密算法,特别适合于资源有限的环境,如STM32或51单片机。STM32系列是基于ARM Cortex-M内核的微控制器,而51单片机则是早期广泛应用的8位微处理器。在这些平台上,由于内存(RAM)资源...

    android iOS php des 互通加密解密算法

    在`Android`平台上,你可以使用Java的`javax.crypto`库来实现`DES`加密解密。首先,需要创建一个`SecretKeySpec`对象,使用它和`DesKeySpec`对象初始化`KeyGenerator`,然后生成`SecretKey`。接着,使用`Cipher`对象...

    VC++ DES 加密解密算法

    在VC++环境中实现DES加密解密,你需要理解以下几个关键知识点: 1. **DES算法流程**:DES算法包括初始置换、16轮的Feistel函数和逆初始置换三个主要步骤。每轮Feistel函数中,又包含子密钥产生、异或操作、S盒替换...

    DES文件加密解密算法实现

    在"DES文件加密解密算法实现"中,提到的CBC(Cipher Block Chaining)模式是一种常用的块加密模式。在CBC模式下,每个明文块都会与前一个密文块进行异或操作后再进行加密。这样做的目的是为了增加加密的复杂性和安全...

    matlab实现DES加密解密算法

    加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密

    3DES加密解密算法

    以下是关于3DES加密解密算法在Java中的实现细节: 首先,为了使用3DES,Java程序需要引入特定的JAR包,这些包通常位于`JAVA_HOME/jre/lib/`目录下,包括`jce.jar`、`US_export_policy.jar`、`local_policy.jar`以及...

    DES加密解密算法包含txt文件加密,分组加密

    在描述中提到的C++实现的DES加密解密算法,主要是针对TXT文本文件进行操作的。TXT文件是一种常见的文本格式,通常用于存储纯文本信息。DES算法在处理这种文件时,会将文件内容视为二进制数据流,然后按照64位的块...

    3DES加密解密工具

    标题中的“3DES加密解密工具”指的是一个用于执行三重数据加密标准(3DES,Triple DES)的软件工具,这种工具通常用于保护敏感数据的安全,确保信息在传输过程中的机密性。3DES是DES(Data Encryption Standard,...

    DES.rar_Des加密解密_des_des加密解密算法_visual c

    在这个"DES.rar"压缩包中,包含了关于DES加密解密算法的学习资料,这可能包括源代码、教程或者示例项目,供用户了解和实践DES算法。"www.pudn.com.txt"可能是提供下载链接或者介绍的文本文件,而"DES"可能是一个包含...

    DES加密解密算法(C语言实现)

    DES,即Data Encryption Standard,是1970年代由IBM开发的一种对称密钥加密算法,后来被美国国家标准局...通过阅读和分析这个源代码,我们可以深入理解DES的工作机制,以及如何在实际项目中应用C语言实现加密解密功能。

    des加密解密_Des加密解密_DES加密_

    在给定的“des加密例程”中,可能包含了一个调用动态链接库(DLL)实现DES加密解密的示例代码。DLL是Windows操作系统中的一种共享库,可以被多个程序同时调用,节省内存资源并便于代码复用。这个示例可能涉及以下...

    DES.rar_DES加密_Des加密解密_des加密解密算法

    下面将详细介绍DES加密解密算法及其在`DES.cpp`中的实现原理。 **DES算法概述:** 1. **初始置换(IP)**:原始的64位明文数据首先经过一个初始置换,将数据重新排列,增加破解难度。 2. **16轮迭代**:每轮包括...

    密码学DES算法的实现 含有加密和解密

    DES算法是美国国家标准局(NBS)于1977年颁布的数据加密标准(FIPS),它使用56位的密钥对64位的明文进行加密和解密。 DES算法的加密过程可以分为以下几个步骤: 1.初始置换(IP):将64位的明文进行换位处理,...

    DES加密解密算法的C语言实现

    DES 加密解密算法的 C 语言实现 本文档介绍了 DES 加密解密算法的 C 语言实现,提供了完整的源代码,能够加密字符串或者文件,已经通过测试使用。DES 加密算法是一种对称加密算法,既可用于加密又可用于解密。 一...

    2024最新DES加密解密算法(简单、易懂、超级详细)

    2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES...

    Des加密解密算法(C语言互通)

    Android Des加密解密算法

Global site tag (gtag.js) - Google Analytics