|
5精币
本帖最后由 最后一抹笑 于 2013-6-15 18:33 编辑
这段是c++的 源码 由于不懂C++ 所以看不懂这段代码 ,请会c++的大神帮忙修改下下换成易语言的
只要会的 话精币好说 可以加的 如果懂JAVA的 也可以我也有代码
[e]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
#include<windows.h>
#include "global.h"
#include "md5.h"
char *userName;
byte PIN[30] = {0};
void getMM(byte *key, byte *PIN)
{
MD5_CTX md5;//MD5结构体
MD5Init(&md5);
MD5Update (&md5, key, 10);
MD5Final (PIN, &md5);
}
//getPIN input:userName output:PINwithUserName
void getPIN(byte *userName, byte *PIN)
{
int i,j;//循环变量
long timedivbyfive;//时间除以五
time_t timenow;//当前时间,从time()获得
byte RADIUS[16];//凑位字符
byte timeByte[4];//时间 div 5
byte beforeMD5[32];//时间 div 5+用户名+凑位
MD5_CTX md5;//MD5结构体
byte afterMD5[16];//MD5输出
byte MD501H[2]; //MD5前两位
byte MD501[3];
byte timeHash[4]; //时间div5经过第一次转后后的值
byte temp[32]; //第一次转换时所用的临时数组
byte PIN27[6]; //PIN的2到7位,由系统时间转换
//code
// info("sxplugin : using zjxinlisx01");
strcpy(RADIUS,"zjxinlisx01");
timenow = time(NULL);
// timenow=1369048482;
timedivbyfive = timenow / 5;
for(i = 0; i < 4; i++) {
timeByte = (byte)(timedivbyfive >> (8 * (3 - i)) & 0xFF);
}
for(i = 0; i < 4; i++) {
beforeMD5= timeByte;
}
for(i = 4; i < 16 && userName[i-4]!='@' ; i++) {
beforeMD5 = userName[i-4];
}
j=0;
while(RADIUS[j]!='\0')
beforeMD5[i++] = RADIUS[j++];
MD5Init(&md5);
MD5Update (&md5, beforeMD5, i);
printf("%d %s\n",i,beforeMD5);
MD5Final (afterMD5, &md5);
MD501H[0] = afterMD5[0] >> 4 & 0xF;
MD501H[1] = afterMD5[0] & 0xF;
sprintf(MD501,"%x%x",MD501H[0],MD501H[1]);
for(i = 0; i < 32; i++) {
temp = timeByte[(31 - i) / 8] & 1;
timeByte[(31 - i) / 8] = timeByte[(31 - i) / 8] >> 1;
}
for (i = 0; i < 4; i++) {
timeHash = temp * 128 + temp[4 + i] * 64 + temp[8 + i]
* 32 + temp[12 + i] * 16 + temp[16 + i] * 8 + temp[20 + i]
* 4 + temp[24 + i] * 2 + temp[28 + i];
}
temp[1] = (timeHash[0] & 3) << 4;
temp[0] = (timeHash[0] >> 2) & 0x3F;
temp[2] = (timeHash[1] & 0xF) << 2;
temp[1] = (timeHash[1] >> 4 & 0xF) + temp[1];
temp[3] = timeHash[2] & 0x3F;
temp[2] = ((timeHash[2] >> 6) & 0x3) + temp[2];
temp[5] = (timeHash[3] & 3) << 4;
temp[4] = (timeHash[3] >> 2) & 0x3F;
for (i = 0; i < 6; i++) {
PIN27 = temp + 0x020;
if(PIN27>=0x40) {
PIN27++;
}
}
PIN[0] = '\r';
PIN[1] = '\n';
memcpy(PIN+2, PIN27, 6);
PIN[8] = MD501[0];
PIN[9] = MD501[1];
strcpy(PIN+10, userName); //HDU ONLY USE
}
[/e] |
|