文字列の値を返すことができる関数を作りたいです。しかし、私はこの間違いだけでは解決できない数日でこの問題に遭遇しました。だから私はあなたのアドバイスやヒントが必要です。Hash jh sha3 2010候補関数を使用していました。コードは次のとおりです。
anyway this an update code, but I still dont get expected value to get this function called from Python Language. the returned value is "9976864". Anymore helps?
#include <stdio.h>
#include "jh_ansi_opt32.h"
#include <time.h>
#include <stdlib.h>
char* jh(char *input)
{
BitSequence output[512];
char *iData;
char* msg;
int dInt;
msg= (char*)malloc(sizeof(output));
if(!msg){
return 1;
}
memset(output,0,sizeof(output));
iData = input;
printf("[+] data is %s\n", iData);
dInt = strlen(iData);
BitSequence data[dInt];
memset(data,0, sizeof(data));
strncpy(data,iData,dInt);
DataLength dLen =dInt;
HashJh(512, data,dLen,output);
//printf("\n[+] resulted hash is ");
int k;
for (k=0;k<sizeof(output);k++){
msg[k]= output[k];
}
if (msg) return msg;
free(msg);
return 0;
}
そしてpythonのものは次のとおりです。
from ctypes import *
d = CDLL('jh.dll')
a=d.jh('this is message by hash jh function')
print a
これは更新コードですが、まだ期待値が得られません。Python から呼び出そうとしたときに返される値は、整数 "9968784" です。もう助けていただければ幸いです、ありがとう..