麻烦哪位师父给帮忙指点哈。能实现必结贴。#define XOR_EX_KEY "\x33\x96\x8e\xfa\x24\xa9\xb1\x6a\x51\x03\x27\xc5\x52\x92\xe3\xf8\x19\x07\x3a\x92\x68"
void xor_buf_ex(
unsigned char *pInBuffer,
unsigned char *pOutBuffer,
unsigned long cbBuffer,
unsigned char *pKey,
unsigned long lKeyLen,
unsigned long offset
)
{
if (lKeyLen <= 0) return;
for (unsigned long i=0; i<cbBuffer; i++) {
unsigned u = ((unsigned long)offset+i)%lKeyLen;
*pOutBuffer = *pInBuffer ^ pKey[u];
*pOutBuffer = *pOutBuffer ^ i;
pInBuffer++;
pOutBuffer++;
}
}用xor_buf_ex()进行解密就可以了:xor_buf_ex((unsigned char *)buf,
(unsigned char *)buf, nConfigLen, (unsigned char *)XOR_EX_KEY, strlen(XOR_EX_KEY), 0);
void xor_buf_ex(
unsigned char *pInBuffer,
unsigned char *pOutBuffer,
unsigned long cbBuffer,
unsigned char *pKey,
unsigned long lKeyLen,
unsigned long offset
)
{
if (lKeyLen <= 0) return;
for (unsigned long i=0; i<cbBuffer; i++) {
unsigned u = ((unsigned long)offset+i)%lKeyLen;
*pOutBuffer = *pInBuffer ^ pKey[u];
*pOutBuffer = *pOutBuffer ^ i;
pInBuffer++;
pOutBuffer++;
}
}用xor_buf_ex()进行解密就可以了:xor_buf_ex((unsigned char *)buf,
(unsigned char *)buf, nConfigLen, (unsigned char *)XOR_EX_KEY, strlen(XOR_EX_KEY), 0);
解决方案 »
- 求数组最大和最小值
- 绝对路径?
- 求救:项目发布时报了一堆错误!!!!
- Eclipse中关于设置快捷方式的问题
- 关于Oracle中Clob字段处理的问题(Struts+Hibernate)
- 一个分页的问题,JSP页面。。。
- 紧急求救:客户端请求,服务器端没有返回数据,socket通讯发生意外,导致应用程序退出,请教高手,怎么处理这个异常?
- 谁能帮我解释一下J2EE,J2ME,J2SE,EJB,BEAN的区别,及都能做些什么?
- 快来拿分
- 哪里可以下在Java方面的多媒体教学光盘
- 如何在jsp页面中获得action的数据
- 各位大虾们小菜刚进公司 求救 不同系统间使用Session相互登录的问题,,分不多 可以再加
:Java
public class Abc { static final String XOR_EX_KEY = "\u0033\u0096\u008e\u00fa\u0024\u00a9\u00b1\u006a\u0051\u0003\u0027\u00c5"; //\x52\x92\xe3\xf8\x19\x07\x3a\x92\x68"
public static void xor_buf_ex(
byte[] pInBuffer,
byte[] pOutBuffer,
String pKey,
long offset
)
{
if (pInBuffer.length <= 0)
return;
int lKeyLen = pKey.length();
byte[] keyBytes = pKey.getBytes();
for (int i = 0; i<pInBuffer.length; i++)
{
byte u = (byte) ((offset + i) % lKeyLen);
pOutBuffer[i] = (byte) (pInBuffer[i] ^ keyBytes[(int)u]);
pOutBuffer[i] = (byte) (pOutBuffer[i] ^ i); }
}
public static void main(String[] args) {
byte[] inbuffer = { 12, 34, 45, 56, 56, 76, 87, 23};
byte[] outbuffer = new byte[inbuffer.length];
byte[] outbuffer2 = new byte[inbuffer.length];
xor_buf_ex(inbuffer, outbuffer, XOR_EX_KEY, 0);
xor_buf_ex(outbuffer, outbuffer2, XOR_EX_KEY, 0);
int a = 0;
}
}
:C++#define XOR_EX_KEY "\x33\x96\x8e\xfa\x24\xa9\xb1\x6a\x51\x03\x27\xc5"//\x52\x92\xe3\xf8\x19\x07\x3a\x92\x68"
void xor_buf_ex(
unsigned char *pInBuffer,
unsigned char *pOutBuffer,
unsigned long cbBuffer,
unsigned char *pKey,
unsigned long lKeyLen,
unsigned long offset
)
{
if (lKeyLen <= 0) return;
for (unsigned long i=0; i<cbBuffer; i++)
{
unsigned u = ((unsigned long)offset+i) % lKeyLen;
*pOutBuffer = *pInBuffer ^ pKey[u];
*pOutBuffer = *pOutBuffer ^ i;
pInBuffer++;
pOutBuffer++;
}
}int _tmain(int argc, _TCHAR* argv[])
{
unsigned char* inbuffer = (unsigned char*)"abcdefg";
unsigned char outbufer[1024] = {};
xor_buf_ex(inbuffer, outbufer, 7, (unsigned char*)XOR_EX_KEY, 12, 0); unsigned char outbufer2[1024] = {};
xor_buf_ex(outbufer, outbufer2, 7, (unsigned char*)XOR_EX_KEY, 12, 0);
return 0;
}都是可 抑或解密 回来的。