有一个HMAC-SHA1.dll的文件,
里面有两个:
int HMAC_SHA1(BYTE *text, const int text_len, BYTE *key, const int key_len, BYTE *digest, const int digest_len);
int Base64Encode(BYTE *src, const int src_len, BYTE *dst, const int dst_len);怎么在delphi里,声明和使用这两个函数。
测试数据有
text=GET&%2Fdeal%2FsellerSearchDealList.xhtml&accessToken%3Dad39b7dbd59b87cda827223c0e520d6f%26appOAuthID%3D700042973%26charset%3Dgbk%26format%3Dxml%26randomValue%3D40898%26sellerUin%3D1280863473%26timeStamp%3D1371222640062%26uin%3D1280863473%26zhongwen%3D%D6%D0%CE%C4
key=hdUMwmU4P5jQtHpC&
返回值,digest=tPJTxXC+OlgzL/RXPrS247VJIyE=

解决方案 »

  1.   


    function HMAC_SHA1(text:PBYTE; const text_len:integer; key:PBYTE; const key_len:integer;
    digest:PBYTE; const digest_len:integer):integer;funciton Base64Enconde(src:PBYTE; cons src_len:integer; dst:PBYTE; const dst_len:integer)
    :Integer;
    var
      text,key, digest:PBYTE;
      resVal: integer;
    const 
       txt_len = 64; // 大小自己自己按需设定
       digest_len = 32;
       key_len = 16;
    begin
        getmem(text, txt_len); 
        getmem(digest, diges_len);
        getmem(key, key_len);
        resVal := HMAC_SHA1(text, txt_len, key, key_len,digest, digest_len); 
        freemem(text);
        freemem(key);
        freemem(digest);
    end;
      
      

  2.   

    喝高了,省略了text,key, digest 这些的赋值过程,自己给它们赋值,并把长度一并传进HMAC_SHA1去就行了
      

  3.   


    怎么根据dst:PBYTE、和dst_len:integer,得到string型值。
      

  4.   

    怎么根据dst:PBYTE、和dst_len:integer,得到string型值。没看懂你问的啥意义。
    参数是byte数组或byte*,跟string有啥关系啊。
    重要的是,参数要输入什么,你得看该函数的说明文档,不然百搭。
    前面的代码只是给你转换函数声明而已。
      

  5.   

    这个函数的作用是通过输入密key钥、明文test,得到hmac-sha1算法的值,
    返回值是 dst:PBYTE; const dst_len:integer
    然后delphi中,要根据这两个转化为string型,怎么写?
      

  6.   

    就是byte指针和长度,转变为字符串,解决C和Delphi之间的数据结构
      

  7.   

    这样的话,前面的pbyte声明为byte数组更方便const
      arr: array[0..3] of Byte = (65,66,67,0);
    var
      str: String;
    begin
      SetLength(str, Length(arr) +1);
      Move(arr,str[1],Length(arr));
      ShowMessage(str);     // 输出 'ABC'
    end;
      

  8.   

    这样的话,前面的pbyte声明为byte数组更方便
    pbyte是C里定义的,能否改为byte数组
      

  9.   

    c里传参,byte* byte数组没区别
      

  10.   

    Ansili 
    已经帮我用C写了一个dll,然后我在delphi7下,可以调用dll就可以了。
      

  11.   

    这个DLL你还有无,要不发我邮箱[email protected],谢谢。