`
齐晓威_518
  • 浏览: 618001 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

用java实现对字符串的IDEA加密

 
阅读更多

首先引入bcprov-ext-jdk14-140.jar这个包,可以从http://www.bouncycastle.org上下载,下面是代码

/**
* 加密工具类
*/

package net.risesoft.platform.util;

import org.bouncycastle.crypto.BlockCipher;
import org.bouncycastle.crypto.CryptoException;
import org.bouncycastle.crypto.engines.IDEAEngine;
import org.bouncycastle.crypto.modes.CBCBlockCipher;
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.encoders.Hex;

/**
* 加密工具类
*
* @author xiaosong
*
*/
public class IDEAEncrypt
{

private PaddedBufferedBlockCipher cipher = null;

/**
* 密钥的长度
*/
private int keylength;

/**
* 设置Block Cipher的加密引擎, 如IDEA_Engine
*
* @param block_cipher_engine
*            加密引擎
*/
public void setEngine(BlockCipher block_cipher_engine)
{
   /*
   * Setup the DESede cipher engine, create a PaddedBufferedBlockCipher in
   * CBC mode.
   */
   cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(
     block_cipher_engine));
}

/**
* 设置Block Cipher的密钥长度
*
* @param length
*/
public void setKeyLength(int length)
{
   this.keylength = length;
}

/**
* 设置密钥
*
* @param encrypt
*            加密还是解密
* @param keyStr
*            密钥字符串
*/
public void init(boolean encrypt, String keyStr)
{
   /**
   * 初始化密钥
   */
   byte[] keybyte = new byte[this.keylength];

   keybyte = Hex.decode(keyStr);// 将密钥加密
   /**
   * encrypt = true 加密 encrypt = false 解密
   */
   cipher.init(encrypt, new KeyParameter(keybyte));
}

/**
* 加密
*
* @param 要加密的字符串
* @return 加密后的密文
*/
public String Encrypt(String mingwen)
{
   byte[] inblock = mingwen.getBytes();
   byte[] outblock = new byte[cipher.getOutputSize(inblock.length)];
   int outL;
   String s1 = "";
   outL = cipher.processBytes(inblock, 0, inblock.length, outblock, 0);
   try
   {
    outL = cipher.doFinal(outblock, outL);
   } catch (CryptoException ce)
   {
    ce.printStackTrace();
   }
   byte[] result = Hex.encode(outblock);
   s1 = new String(result).trim();
   return s1;

}

/**
* 解密
* @param miwen 密文
* @return 明文
*/
public String Decrypt(String miwen)
{
   byte[] inblock = null;
   byte[] outblock = null;
   String s1 = "";
   int outL;
   inblock = Hex.decode(miwen);
   outblock = new byte[cipher.getOutputSize(inblock.length)];
   outL = cipher.processBytes(inblock, 0, inblock.length, outblock, 0);
   try
   {
    outL = cipher.doFinal(outblock, outL);
    s1 = new String(outblock).trim();
   } catch (CryptoException ce)
   {
    ce.printStackTrace();
   }
   return s1;
}

public static void main(String[] args)
{
   IDEAEncrypt cipherTool = new IDEAEncrypt();
   cipherTool.setEngine(new IDEAEngine());
   cipherTool.setKeyLength(128);
   String keyStr = "838jf84fr8jfdfrgrdgdfg";
   cipherTool.init(true, keyStr);
   String miwen = cipherTool.Encrypt("1234567890");
   System.out.println(miwen);


   cipherTool.init(false, keyStr);
   System.out.println(cipherTool.Decrypt(miwen));
}

}

分享到:
评论

相关推荐

    Java中对字符串进行加密和解密[文].pdf

    在Java中,对字符串进行加密和解密是软件开发中常见的需求,特别是在处理敏感信息时,如用户密码或网络传输的数据。这篇文档介绍了如何利用Java的加密库来实现这一目标。 首先,我们要理解密码学的基本概念。密码学...

    java实现md5 加密解密

    java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...

    字符串加密算法详解.pdf

    本文将详细介绍几种常见的字符串加密方法及其应用特点,并重点探讨Java AES加密算法的工作原理和实现步骤。 #### 二、常见字符串加密方法及其特点 1. **异或加密(XOR Encryption)** - **原理**:将字符串中的每...

    java中使用MD5加密

    在java中或是在jsp中实现对字符串的加密。

    Java AES128加密解密

    在Java中实现AES128加密解密,通常会使用Java Cryptography Extension (JCE) 提供的API。AES支持三种工作模式:ECB(Electronic Codebook)、CBC(Cipher Block Chaining)和CFB(Cipher Feedback)。其中,ECB是最...

    RSA加密JAVA实现+sun.misc.BASE64Decoder.jar

    在Java中实现RSA加密,需要使用`java.security`包下的类,如`KeyPairGenerator`用于生成密钥对,`Cipher`用于执行加密和解密操作,以及`KeyPair`用于存储公钥和私钥。以下是一个简单的RSA加密和解密流程: 1. 密钥...

    Java安全—Java实现Base64加密

    在上述示例中,我们展示了如何对字符串进行Base64编码和解码。但是,实际应用中,你可能需要对二进制数据(如图片或文件)进行编码。这时,只需将二进制数据的字节数组传递给编码方法即可。 至于标签"工具",在开发...

    基于Java的加密算法演示项目.zip

    IDEADemo: 演示了如何使用IDEA加密算法进行加密和解密,包括密钥生成和转换。 MD5Demo: 提供了一个MD5哈希算法的实现,展示了如何计算字符串的MD5值。 RSADemo: 展示了RSA非对称加密算法的使用,包括密钥生成、...

    Java字节码加密工具

    1. 字节码混淆:混淆技术通过重命名类、方法和变量,使用无意义的字符串,使得反编译后的代码难以阅读和理解。例如,ProGuard和Zelix KlassMaster等混淆工具就是常用的选择。 2. 字节码注入:在原始字节码的基础上...

    Scala版3des加密算法,用来实现对数据库配置文件的用户名密码加密。一个idea项目,包含pom文件

    最后,使用Base64编码将加密后的字节数组转换为可打印的字符串。解密过程则相反,先对Base64解码,然后进行解密操作。 在IDEA项目中,`pom.xml`文件是Maven项目的配置文件,它定义了项目依赖、构建目标等信息。在这...

    RSA加密算法Java语言版

    在这个例子中,我们首先生成了一个2048位的RSA密钥对,然后使用公钥对字符串进行加密,再使用私钥进行解密,确保信息的安全性。请注意,实际应用中,公钥通常用于加密,而私钥用于解密,以保护信息不被未经授权的...

    获取哈希及获取哈希算法标识demo-java

    在Java中,哈希算法的标识通常是字符串形式,如"MD5"、"SHA-1"等。这些标识符可以在`MessageDigest`类的`getInstance()`方法中使用,以指定要使用的哈希算法。获取算法标识的常见方式是查阅相关的API文档或标准定义...

    mapabc解密Java实现

    1. **字符串处理**:解密过程可能涉及对字符串进行操作,如查找和替换特定字符、反转字符串或者使用编码转换。 2. **算法理解与实现**:Mapabc的解密算法需要被理解和实现。这可能包括了解密规则,如置换密码、凯撒...

    Playfair_playfairjava_

    本项目名为"Playfair_playfairjava_",表明它是一个用Java语言编写的Playfair算法实现,适配于IntelliJ IDEA集成开发环境。 Playfair算法的核心原理是通过5x5矩阵对字母进行编码,以此来进行加密和解密。首先,我们...

    IDEA、LFSR等八种常见加解密简单程序

    在VS2005中实现这些算法,你需要理解它们的基本原理,然后编写相应的C++代码,可能涉及到位操作、字符串处理和数学运算。每个算法的加密和解密过程都需要实现,并确保在编译时没有错误。此外,理解这些算法的安全性...

    playfair java实现

    ### Playfair 加密算法的 Java 实现解析 #### 一、Playfair 加密算法简介 Playfair 加密算法是一种双字母替换密码,由英国人查尔斯·惠斯顿于 1854 年发明,后经苏格兰人列昂纳德·莫尔斯改进并推广。这种加密方式...

    javamd5加密工具类

    在Java中,除了Apache Commons Codec之外,还可以使用Java内置的`java.security.MessageDigest`类来实现MD5加密,例如: ```java import java.security.MessageDigest; import java.security....

    java MD5加密实现代码

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成固定长度的输出,通常是32位的16进制表示的字符串。在Java中,MD5加密主要通过`java.security.MessageDigest`类来...

    Allatori java 代码混淆

    2. 字符串加密:Allatori能够将字符串常量加密,使得在内存中查找敏感信息变得更加困难。这样,即使有人尝试通过调试器查看程序运行时的字符串,也只会看到加密后的数据。 3. 控制流混淆:通过对代码结构进行重组,...

Global site tag (gtag.js) - Google Analytics