`
阅读更多

如此用法:传一个字符串进去

password = password.toLowerCase();
  String _password = Encrypter.encrypter(password);
  _password = TextUtils.isEmpty(_password) ? "" : _password;

 

 

 

Encrypter此类:

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;

public class Encrypter {
    public static final String SECRET_KEY = "PkmJygVfrDxsDeeD";

    /*
     * Encrypter method
     *
     * @param password, public text need to be encrypted
     *
     * @return encrypt text
     */
    public static String encrypter(String str) {
        String string = null;

        try {
            string = AES128_ECB_HEX.encode(str.getBytes(), 0, SECRET_KEY.getBytes(), 0);
        } catch (InvalidKeyException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BadPaddingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return string;
    }

    /*
     * Decrypter method
     *
     * @param password, secret text need to be decrypted
     *
     * @return public text
     */
    public static String decrypter(String str) {
        String string = "";

        try {
            string = new String(AES128_ECB_HEX.decode(str, SECRET_KEY.getBytes(), 0));
        } catch (InvalidKeyException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BadPaddingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return string;
    }
}

 

AES128_ECB_HEX此类:

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;

public final class AES128_ECB_HEX {
    /*
     * encode method
     *
     * @param btPlain, public text need to be encrypted
     *
     * @param iLen, the length of public text锟斤拷it equals the length of btPlain
     * when is 0
     *
     * @param btKey, secret key
     *
     * @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
     * is 0
     */
    public static String encode(byte[] btPlain, int iLen, byte[] btKey, int iKeyLen)
    throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
    NoSuchAlgorithmException, NoSuchPaddingException {
        return HEX.encode(AES128_ECB.encode(btPlain, iLen, btKey, iKeyLen), 0);
    }

    /*
     * decode method
     *
     * @param stHex, hex cryptograph
     *
     * @param btKey, secret key
     *
     * @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
     * is 0
     */
    public static byte[] decode(String stHex, byte[] btKey, int iKeyLen)
    throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
    NoSuchAlgorithmException, NoSuchPaddingException {
        return AES128_ECB.decode(HEX.decode(stHex), 0, btKey, iKeyLen);
    }

    private AES128_ECB_HEX() {}
}

此类HEX:

public class HEX {
    /*
     * encode method
     *
     * @param btData, public text need to be hex
     *
     * @param iLen, the length of public text锟斤拷it equals the length of btData
     * when is 0
     */
    public static String encode(byte[] btData, int iLen) {
        String l_stTmp = null;
        StringBuffer l_stHex = new StringBuffer();
        int ii;

        if (btData == null) {
            return null;
        }

        if ((iLen <= 0) || (iLen > btData.length)) {
            iLen = btData.length;
        }

        for (ii = 0; ii < iLen; ii++) {
            l_stTmp = Integer.toHexString(btData[ii] & 0xFF);

            if (l_stTmp.length() == 1) {
                l_stTmp = "0" + l_stTmp;
            }

            l_stHex.append(l_stTmp.toUpperCase());
        }

        return l_stHex.toString();
    }

    /*
     * decode method
     *
     * @return null if conversion failed
     */
    public static byte[] decode(String stData) {
        byte[] l_btData = null;
        byte[] l_btTmp = null;
        String l_stData = null;
        int l_iLen;
        int ii;
        int jj;
        int kk;
        char l_cTmp;

        if (stData == null) {
            return null;
        }

        l_iLen = stData.length();

        if ((l_iLen % 2) != 0) {
            return null;
        }

        l_stData = stData.toUpperCase();

        for (ii = 0; ii < l_iLen; ii++) {
            l_cTmp = l_stData.charAt(ii);

            if (!((('0' <= l_cTmp) && (l_cTmp <= '9')) || (('A' <= l_cTmp) && (l_cTmp <= 'F')))) {
                return null;
            }
        }

        l_iLen /= 2;

        l_btData = new byte[l_iLen];

        l_btTmp = new byte[2];

        for (ii = 0, jj = 0, kk = 0; ii < l_iLen; ii++) {
            l_btTmp[0] = (byte) (l_stData.charAt(jj++));
            l_btTmp[1] = (byte) (l_stData.charAt(jj++));

            for (kk = 0; kk < 2; kk++) {
                if (('A' <= l_btTmp[kk]) && (l_btTmp[kk] <= 'F')) {
                    l_btTmp[kk] -= 55;
                } else {
                    l_btTmp[kk] -= 48;
                }
            }

            l_btData[ii] = (byte) ((l_btTmp[0] << 4) | l_btTmp[1]);
        }

        return l_btData;
    }

    private HEX() {}
}

此类:AES128_ECB

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

public final class AES128_ECB {
    private static final int AES_128_KEY_LEN = 16; // 128 bit

    /*
     * encode method
     *
     * @param btPlain, public text need to be encrypted
     *
     * @param iLen, the length of public text锟斤拷it equals the length of btPlain
     * when is 0
     *
     * @param btKey, secret key
     *
     * @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
     * is 0
     */
    public static byte[] encode(byte[] btPlain, int iLen, byte[] btKey, int iKeyLen)
    throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
    NoSuchAlgorithmException, NoSuchPaddingException {
        return encode_decode(btPlain, iLen, btKey, iKeyLen, 0);
    }

    /*
     * decode method
     *
     * @param btCipher, secret text
     *
     * @param iLen, the length of secret text锟斤拷it equals the length of btCipher
     * when is 0
     *
     * @param btKey, secret key
     *
     * @param iKeyLen, length of secret key锟斤拷it equals the length of btKey when
     * is 0
     */
    public static byte[] decode(byte[] btCipher, int iLen, byte[] btKey, int iKeyLen)
    throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException,
    NoSuchAlgorithmException, NoSuchPaddingException {
        return encode_decode(btCipher, iLen, btKey, iKeyLen, 1);
    }

    private static byte[] encode_decode(byte[] btData, int iLen, byte[] btKey, int iKeyLen,
                                        int iFlag) throws BadPaddingException, IllegalBlockSizeException,
    InvalidKeyException,
    NoSuchAlgorithmException, NoSuchPaddingException {
        int ii;
        int l_iMode;

        byte[] l_btKey = null;
        Cipher l_oCipher = null;

        if ((btData == null) || (btKey == null)) {
            return null;
        }

        if ((iLen <= 0) || (iLen > btData.length)) {
            iLen = btData.length;
        }

        if ((iKeyLen <= 0) || (iKeyLen > btKey.length)) {
            iKeyLen = btKey.length;
        }

        if (iKeyLen > AES_128_KEY_LEN) {
            // 16 Bytes
            iKeyLen = AES_128_KEY_LEN; // 16 Bytes
        }

        l_btKey = new byte[AES_128_KEY_LEN]; // 16 Bytes

        for (ii = 0; ii < AES_128_KEY_LEN; ii++) {
            l_btKey[ii] = (byte) 0x00;
        }

        for (ii = 0; ii < iKeyLen; ii++) {
            l_btKey[ii] = btKey[ii];
        }

        l_oCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

        if (iFlag == 0) {
            l_iMode = Cipher.ENCRYPT_MODE;
        } else {
            l_iMode = Cipher.DECRYPT_MODE;
        }

        l_oCipher.init(l_iMode, new SecretKeySpec(l_btKey, 0, AES_128_KEY_LEN, "AES"));

        return l_oCipher.doFinal(btData, 0, iLen);
    }

    private AES128_ECB() {}
}

 

解密

password = Encrypter.decrypter(password);
以上所有都是加解密用到的类,自己也不懂很多代码为什么这么写

0
2
分享到:
评论
2 楼 jack_ye 2013-06-18  
1 楼 jack_ye 2013-06-18  
··

相关推荐

    java加密解密工具

    Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...

    JS加解密 JAVA加解密

    前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密 前端加解密 后端加解密 JS加解密 JAVA加解密

    Java 加解密技术系列之HMAC.pdf

    Java 加解密技术系列之 HMAC 知识点详解 HMAC(Hash-based Message Authentication Code,散列消息鉴别码)是一种用于验证数据完整性和来源安全性的密码学技术。它结合了哈希函数和密钥,确保只有拥有特定密钥的...

    java 加解密算法 BouncyCastle加解密包15on-1.60

    BouncyCastle,又称BC,是一个开源的Java安全包,提供了广泛的密码学功能,包括但不限于加解密、数字签名、证书管理以及哈希算法。标题提到的"BouncyCastle加解密包15on-1.60"指的是该库的一个特定版本,版本号为...

    JCT - java加密解密工具包.zip_Java加密_java 加密_jct java_加密 解密_加密工具

    7. **加解密接口**:JCT可能提供了一套统一的API,使得开发者能够方便地调用各种加密算法,而无需深入了解底层实现细节。 8. **文档和源代码**:压缩包中的`jct_doc.zip`可能是JCT工具包的API文档,对于理解和使用...

    JAVA加密解密-3

    在Java编程语言中,加密和解密是网络安全和数据保护的重要组成部分。本教程"JAVA加密解密-3"聚焦于如何在Java环境中实现文件的加密和解密功能。以下是一些核心知识点: 1. **加密的基本概念**:加密是将明文数据...

    java加密解密算法大全

    在Java中,可以利用`javax.crypto`包下的类和接口实现上述算法的加密和解密功能,例如使用`Cipher`类进行加解密操作,`KeyGenerator`和`KeyPairGenerator`类用于生成密钥。 #### 结语 加密技术是维护网络安全的...

    很强的Java加密解密算法源码.zip

    Java加密解密技术在软件开发中扮演着至关重要的角色,特别是在数据安全领域。3DES(Triple Data Encryption Standard)是一种常见的加密算法,它基于DES(Data Encryption Standard)并对其进行了加强,提高了安全性...

    java加密解密程序

    Java加密解密程序是软件开发中的一个重要领域,主要用于保护数据的安全性和隐私性。在这个特定的案例中,我们讨论的是一个基于MyEclipse开发的Java应用程序,它实现了凯撒加密法,这是一种古老但基础的加密技术。...

    Java加密解密

    Java加密解密是信息安全领域中的一个关键话题,特别是在软件开发中,它对于保护敏感数据、实现安全通信至关重要。Java提供了一系列强大的加密库和API,使得开发者可以方便地进行数据加密和解密操作。本项目提供的...

    java加密解密代码

    一段java语言加密和解密的代码

    java 加密解密 示例

    在Java中,加密和解密操作主要通过`javax.crypto`包提供的类和接口来实现,例如`Cipher`类用于执行加解密操作,`KeyGenerator`用于生成密钥,`SecretKeySpec`和`PKey`(PublicKey, PrivateKey)用于管理密钥等。...

    java加密解密zip压缩包

    在Java编程环境中,创建一个能够加密和解密ZIP压缩包的项目是一项常见的需求,尤其是在处理敏感数据时。本文将深入探讨如何使用Java实现这一功能,同时也会提及与ActionScript 3(AS3)进行加密解密的相关知识。 ...

    JAVA加密解密

    在IT行业中,加密和解密是信息安全领域的重要组成部分,特别是在Java编程中。本文将深入探讨Java中的加密解密技术,并结合提供的资源进行分析。 首先,标题"JAVA加密解密"表明我们将关注Java语言中用于保护数据隐私...

    java 加密解密 软件 c c++ 纯净版

    这些算法可以用于对数据进行加解密,确保数据在传输过程中的安全性。 2. **C/C++加密解密**:C和C++同样可以实现加密解密功能,通常通过调用操作系统提供的API或者使用开源库,如OpenSSL。开发者需要理解基本的加密...

    一个用java写的加解密程序.zip_java 加解密_加解密程序_用java做加解密

    在IT行业中,加解密是信息安全领域至...综上所述,这个Java加解密程序涉及到了密码学的基础理论、Java的加密API使用、密钥管理以及安全实践。通过分析和理解这个程序,开发者可以增强在实际项目中应用加密技术的能力。

    java加解密工具类

    直接在cmd环境 java -jar encrypt-decrypt.jar 即可运行。。。。。。。。。。。。。。。。。。

    Java加密解密器源码(有界面)

    这个软件可以根据一串密码加密原文,生成加密后的16进制密文。没有密文和密码就无法还原原文。

    java 加密解密 算法

    Java加密解密是信息安全领域的重要组成部分,用于保护数据的安全性和隐私。在Java中,我们可以使用多种加密算法来实现数据的加密和解密。本篇将详细介绍几种常见的加密算法及其在Java中的应用,包括DES、RSA以及非...

Global site tag (gtag.js) - Google Analytics