首先引入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实现对字符串的加密与解密
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
java 字符串的加密 java 字符串的加密 java 字符串的加密
Java中对字符串进行加密和解密
JAVA可逆带秘钥字符串加密算法,JAVA可逆带秘钥字符串加密算法
这是一个用Java编写的简易字符串加密文件,可以对你输入的任何字符串实现加密解密功能
java 用递归实现字符串反转 java 用递归实现字符串反转
成功实现对字符串的加密解密 希望对大家对c的学习有好处
对字符串进行加密解密操作,字符串的处理,对字符串进行加密解密操作,字符串的处理
java实现的md5加密实现类对所有的字符串进行加密,加密后生成一串加密后的字符串。
Java获取随机字符串Java获取随机字符串Java获取随机字符串
易语言字符串加密工具源码,字符串加密工具
本文实例为大家分享了python实现字符串加密成纯数字的具体代码,供大家参考,具体内容如下 说明: 该加密算法仅仅是做一个简单的加密,安全性就不谈了,哈哈. 算法流程:
jquery加密字符串。常用来处理密码,只需引入,然后按照实例去使用
使用Java操作JSON字符串对象,使用Java操作JSON字符串对象
java解析xml字符串,添加属性,更新属性等
数据加密 加密字符串 数据加密 加密字符串 数据加密 加密字符串 数据加密 加密字符串 数据加密 加密字符串 数据加密 加密字符串
Java字符串加密实例:MD5,sha1,sha256等等。最常用的是对用户密码进行加密
分别实现了BASE64,AES,DES,MD5四种加密解密实现。包含测试代码。
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...