一个简单的CUDA 破解 SHA-1 的程序修改,求各位程序员帮忙看下,等了2天了,没人回...

前几天下了个cuda跑sha1的源码,编译通过了,

但是只能跑单纯的sha1加密,sha1(pass)

我想跑sha1(‘hex_salt’+‘pass’) //salt是16进制的

由于不懂c++不知道怎么修改,望各位帮忙看看

另外还想再加个字典破解,暴力跑效率不好

cuda论坛都没几个人,等了2个晚上了,还没解决,所以这里再发一篇,

每天在线等待高手回答

程序代码 http://cuda.csdn.net/News.aspx?id=7c2219e0-ced0-430d-900d-9f3675508767
部分代码

printf( "Start with %d passwords %d-%d\n", PassCountr, StartLength, StopLength-1);
while ((StartLength < StopLength)&(PassCountr>0))
{

for (int i=0;i<10;i++) ret[i]=0;
char * pb = (char *)&ret[1];

for (int i=0;i<StartLength;i++) pb[i]=CharSet[Plain[i]];
CUDA_SAFE_CALL(cudaMemcpyToSymbol(nVPlain , Plain, 16*4));
CUDA_SAFE_CALL(cudaMemcpy(dret, &ret, 40 , cudaMemcpyHostToDevice));
 if (Short_Hash==0)
 {
sha1<<<BLOKS,THREADS>>>(dcompslow,dTnext,dTabI,dret);
 } else sha1_short<<<BLOKS,THREADS>>>(dcompslow,dTnext,dTabI,dret);
 cudaThreadSynchronize();

 CUDA_SAFE_CALL(cudaMemcpy(ret, dret, 40 , cudaMemcpyDeviceToHost));

if (((ret[7]==0) && (ret[0]!=5))|(ret[8]==5))
 {
 printf("X.Z. nVidia driver fall down \n");
 FreeMem();
 return(0);
 }

if (ret[0]==5)  
{
printf("Found Pass:%s:%.40s:%s \n",Pass[ret[5]].name,Pass[ret[5]].hash,&ret[1]);
if (OutPas!=INVALID_HANDLE_VALUE)
{
char OutPasS[100];
strcpy(OutPasS,Pass[ret[5]].name);
strcat(OutPasS,":");
strcat(OutPasS,(LPTSTR)&ret[1]);
strcat(OutPasS,"\x0d\x0a");
int IB=strlen(OutPasS);
WriteFile(OutPas,OutPasS,IB,(LPDWORD)&IB,0);
}

QQ 交谈

不懂