- 浏览: 92342 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
化蝶自在飞:
还是走腾讯应用宝吧.
微信扫二维码下载客户端被挡 -
hyper1987stone:
java敏感词过滤 -
菜鸟级JAVA:
先引用2个js(一个jquery、一个日期插件),然后在需要使 ...
java jsp 日期控件 -
woshishen__74:
你的有点问题 是不是少了一个jar包?????
java jsp 日期控件
/**
*
* 项目名称:
* 类名称:RC4Util
* 类描述:RC4加解密
* 创建人:
* 创建时间:
* 修改人:
* 修改时间:
* 修改备注:
*
* @version V1.0
*
*/
package util;
public class RC4Util {
/**
* 字节数组rc4解密成字符串
*
* @param data 字节数组
* @param key
* @return
*/
public static String decry_RC4(byte[] data, String key) {
if (data == null || key == null) {
return null;
}
return asString(RC4Base(data, key));
}
/**
* 字符串rc4解密成字符串
*
* @param data
* @param key
* @return
*/
public static String decry_RC4(String data, String key) {
if (data == null || key == null) {
return null;
}
return new String(RC4Base(HexString2Bytes(data), key));
}
/**
* 字符串rc4加密成字节数组
*
* @param data
* @param key
* @return
*/
public static byte[] encry_RC4_byte(String data, String key) {
if (data == null || key == null) {
return null;
}
byte b_data[] = data.getBytes();
return RC4Base(b_data, key);
}
/**
* 字符串rc4加密成字符串
*
* @param data
* @param key
* @return
*/
public static String encry_RC4_string(String data, String key) {
if (data == null || key == null) {
return null;
}
return toHexString(asString(encry_RC4_byte(data, key)));
}
private static String asString(byte[] buf) {
StringBuffer strbuf = new StringBuffer(buf.length);
for (int i = 0; i < buf.length; i++) {
strbuf.append((char) buf[i]);
}
return strbuf.toString();
}
private static byte[] initKey(String aKey) {
byte[] b_key = aKey.getBytes();
byte state[] = new byte[256];
for (int i = 0; i < 256; i++) {
state[i] = (byte) i;
}
int index1 = 0;
int index2 = 0;
if (b_key == null || b_key.length == 0) {
return null;
}
for (int i = 0; i < 256; i++) {
index2 = ((b_key[index1] & 0xff) + (state[i] & 0xff) + index2) & 0xff;
byte tmp = state[i];
state[i] = state[index2];
state[index2] = tmp;
index1 = (index1 + 1) % b_key.length;
}
return state;
}
private static String toHexString(String s) {
String str = "";
for (int i = 0; i < s.length(); i++) {
int ch = (int) s.charAt(i);
String s4 = Integer.toHexString(ch & 0xFF);
if (s4.length() == 1) {
s4 = '0' + s4;
}
str = str + s4;
}
return str;// 0x表示十六进制
}
private static byte[] HexString2Bytes(String src) {
int size = src.length();
byte[] ret = new byte[size / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < size / 2; i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}
private static byte uniteBytes(byte src0, byte src1) {
char _b0 = (char) Byte.decode("0x" + new String(new byte[] { src0 })).byteValue();
_b0 = (char) (_b0 << 4);
char _b1 = (char) Byte.decode("0x" + new String(new byte[] { src1 })).byteValue();
byte ret = (byte) (_b0 ^ _b1);
return ret;
}
private static byte[] RC4Base(byte[] input, String mKkey) {
int x = 0;
int y = 0;
byte key[] = initKey(mKkey);
int xorIndex;
byte[] result = new byte[input.length];
for (int i = 0; i < input.length; i++) {
x = (x + 1) & 0xff;
y = ((key[x] & 0xff) + y) & 0xff;
byte tmp = key[x];
key[x] = key[y];
key[y] = tmp;
xorIndex = ((key[x] & 0xff) + (key[y] & 0xff)) & 0xff;
result[i] = (byte) (input[i] ^ key[xorIndex]);
}
return result;
}
public static void main(String[] args) {
String newId = decry_RC4("cd1086ac0fd86b3e6075efe6bf361fd6f969cff8d7fa5e517a", "hzlqwazuan");
System.out.println(newId);
String parms[] = newId.split("\\|");
System.out.println(parms[0]);
System.out.println(parms[1]);
System.out.println(parms[2]);
}
}
*
* 项目名称:
* 类名称:RC4Util
* 类描述:RC4加解密
* 创建人:
* 创建时间:
* 修改人:
* 修改时间:
* 修改备注:
*
* @version V1.0
*
*/
package util;
public class RC4Util {
/**
* 字节数组rc4解密成字符串
*
* @param data 字节数组
* @param key
* @return
*/
public static String decry_RC4(byte[] data, String key) {
if (data == null || key == null) {
return null;
}
return asString(RC4Base(data, key));
}
/**
* 字符串rc4解密成字符串
*
* @param data
* @param key
* @return
*/
public static String decry_RC4(String data, String key) {
if (data == null || key == null) {
return null;
}
return new String(RC4Base(HexString2Bytes(data), key));
}
/**
* 字符串rc4加密成字节数组
*
* @param data
* @param key
* @return
*/
public static byte[] encry_RC4_byte(String data, String key) {
if (data == null || key == null) {
return null;
}
byte b_data[] = data.getBytes();
return RC4Base(b_data, key);
}
/**
* 字符串rc4加密成字符串
*
* @param data
* @param key
* @return
*/
public static String encry_RC4_string(String data, String key) {
if (data == null || key == null) {
return null;
}
return toHexString(asString(encry_RC4_byte(data, key)));
}
private static String asString(byte[] buf) {
StringBuffer strbuf = new StringBuffer(buf.length);
for (int i = 0; i < buf.length; i++) {
strbuf.append((char) buf[i]);
}
return strbuf.toString();
}
private static byte[] initKey(String aKey) {
byte[] b_key = aKey.getBytes();
byte state[] = new byte[256];
for (int i = 0; i < 256; i++) {
state[i] = (byte) i;
}
int index1 = 0;
int index2 = 0;
if (b_key == null || b_key.length == 0) {
return null;
}
for (int i = 0; i < 256; i++) {
index2 = ((b_key[index1] & 0xff) + (state[i] & 0xff) + index2) & 0xff;
byte tmp = state[i];
state[i] = state[index2];
state[index2] = tmp;
index1 = (index1 + 1) % b_key.length;
}
return state;
}
private static String toHexString(String s) {
String str = "";
for (int i = 0; i < s.length(); i++) {
int ch = (int) s.charAt(i);
String s4 = Integer.toHexString(ch & 0xFF);
if (s4.length() == 1) {
s4 = '0' + s4;
}
str = str + s4;
}
return str;// 0x表示十六进制
}
private static byte[] HexString2Bytes(String src) {
int size = src.length();
byte[] ret = new byte[size / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < size / 2; i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}
private static byte uniteBytes(byte src0, byte src1) {
char _b0 = (char) Byte.decode("0x" + new String(new byte[] { src0 })).byteValue();
_b0 = (char) (_b0 << 4);
char _b1 = (char) Byte.decode("0x" + new String(new byte[] { src1 })).byteValue();
byte ret = (byte) (_b0 ^ _b1);
return ret;
}
private static byte[] RC4Base(byte[] input, String mKkey) {
int x = 0;
int y = 0;
byte key[] = initKey(mKkey);
int xorIndex;
byte[] result = new byte[input.length];
for (int i = 0; i < input.length; i++) {
x = (x + 1) & 0xff;
y = ((key[x] & 0xff) + y) & 0xff;
byte tmp = key[x];
key[x] = key[y];
key[y] = tmp;
xorIndex = ((key[x] & 0xff) + (key[y] & 0xff)) & 0xff;
result[i] = (byte) (input[i] ^ key[xorIndex]);
}
return result;
}
public static void main(String[] args) {
String newId = decry_RC4("cd1086ac0fd86b3e6075efe6bf361fd6f969cff8d7fa5e517a", "hzlqwazuan");
System.out.println(newId);
String parms[] = newId.split("\\|");
System.out.println(parms[0]);
System.out.println(parms[1]);
System.out.println(parms[2]);
}
}
发表评论
-
用java代码发送邮件(优化版)
2017-02-28 10:10 635调用代码如下: if(!StringUtil.isNull ... -
java读取配置文件信息
2017-01-06 16:18 10231、先引包 import java.io.Buffered ... -
生产随机字符串
2016-12-26 10:05 738根据自己的需求生成随机位数的字符串,如:复杂度为中以上的8位随 ... -
java数字转汉语读法
2015-08-28 10:22 775看到好的东西就想收藏一份,说不定自己哪天就用的上了。 ... -
java正则验证数字、邮箱格式、字符串
2015-08-28 10:00 2268用java代码正则验证数字、邮箱格式、字符串的一些工具类方法 ... -
一个简易的线程池示例
2015-08-07 17:39 472package thread.pool; impor ... -
Thread里面使用@resource失败,对象为null
2015-07-02 15:10 4502spring 在Thread中注入@Resource失败,总为 ... -
用java代码发送邮件 附件
2015-06-29 18:30 4159PS:3种示例的代码都在附件压缩包里,每个包一种示例,独立运行 ... -
页面添加验证码
2015-04-24 18:38 628先上图 我的这种方式由3部分代码组成:页面(html+j ... -
查看class文件是被jdk什么版本编译的
2015-04-24 18:24 1034package image; import java ... -
maven+springMVC+mybatis+junit详细搭建过程
2015-02-28 16:16 800springMVC+mybatis框架搭建 首先我们先要弄清搭 ... -
Base64编码解码
2015-02-27 16:53 545package util; import java. ... -
手机号码相关匹配,判断是否手机号码,属于哪个运营商1移动2联通3电信
2015-02-26 09:05 1734package com.hzlq.yyffserver.uti ... -
完成对json数据的解析
2015-02-26 09:05 511package util; import java.util ... -
数字格式+计算工具类
2015-02-26 09:05 622package util; import java.math ... -
DES加密解密
2015-02-26 09:06 505package util; import it.sauron ... -
字符串和xml互转工具类
2015-02-26 09:05 1091package util; import java.io.B ... -
java date工具类
2015-02-25 14:39 1291package util; import java.text ... -
读取配置文件工具类
2015-02-25 14:35 706package util; import java.util ... -
java String工具类
2015-02-25 14:28 1055package util; import java.text ...
相关推荐
主要介绍了java实现的RC4加密解密算法,结合具体实例形式分析了java RC4加密解密算法的实现与使用技巧,需要的朋友可以参考下
RC4加解密算法的例程,用vs2005 C#实现,代码中有部分注释,外部有操作文档,唯一的不足是工程文件命名为RSA,但该例程实现的的确是RC4算法!-RC4 encryption algorithm routines, using vs2005 C# Realize, the ...
易语言源码易语言RC4加解密源码.rar
【原创】C# RC4 加密解密工具,欢迎大家使用。
一个操作简单,代码注释移动的rc4加解密算法的C++实现,你只需要输入要加密数据的文件路径,就会自动生成加密或解密之后的文件。 我想重要的是这段程序可以很好的修改和移植,只需要看懂清晰的注释就能把模块进行...
经典的RC4加密解密,加密解密是相同的,再次加密既解密
使用RC4加密算法对文件进行加密或者解密,C语言实现
RC4加密解密的MFC小程序源码:代码主要内容包括RC4加密与解密、加密后的乱码转16进制等内容。供大家参考学习用。
易语言RC4加解密源码,RC4加解密
并且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在现在技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以能够预见RC4的密钥范围任然能够在今后相当长的时间里抵御暴力搜索...
include('class.rc4crypt.php');...$rc4 = new Crypt_RC4(); $rc4 -> setKey('1bb762f7ce24ceee'); $text = 'hahaha'; echo $x = $rc4->encrypt($text);//加密 echo ' '; echo $rc4->decrypt( $x) ;//解密
RC4加解密.rar
本人根据RC4加密解密算法原理自己实现的RC4加密解密程序 C Python Java Pascal Basic Perl Ruby Jsp Php 九种编程源码
rc4的c++算法实现,包含加密解密过程的完整代码,简单的实现了rc4
利用RC4这个简单的流密码算法,写的一个非常简单的文件加解密的程序。
*网上很多RC4算法在用的时候,都会出现「加密然后立即在内存中解密」可以,但先把加密后的密文写入文件再读取解密就失败的情况。这段代码没有这种情况。 *采用了重载函数,我用了String加密解密,成功。
加载文件,对文件中的内容进行RC4加解密,输出加解密后的文件。
易语言RC4加密解密源码。@资源源码站。
纯python实现的RC4加解密,不依赖任何第三方库,兼容python2和python3,支持中文加解密