看板 C_Sharp 關於我們 聯絡資訊
請問一下各位大大 我今天有一個使用c++寫的 加密用的dll檔 使用sha1的加密技術 cpp檔的內容為 TSGENCODE_API char* fnTSGencode(char *password) { unsigned char output[MAX_ECODE_SIZE] = ""; sha1_base64_encode(output,(unsigned char *)password,strlen(password)); return (char *) output; } 我在c++當中呼叫這個dll檔 所輸出的加密結果都相同 但是我在c#中呼叫這個dll檔結果卻與c++呼叫的結果有所差異 差異如下 Ex.1 ??pNmRCUBoQFBlbdLnWnECjFE= (c#) Q3XmpNmRCUBoQFBlbdLnWnECjFE= (c++) Ex.2 H?IpZOmXzK/Z2YEppq9sZIztE= (c#) JrE3IpZOmXzK/Z2YEppq9sZIztE= (c++) c++ 與c#計算出來的結果前四碼都不同,但是後面都一樣 我c#中的程式碼是 [DllImport( "TSGencode.dll",EntryPoint="fnTSGencode")] public static extern string TSGencode(char[] ae); 請問什摸問題...有人遇過嘛 c# 與c++在傳遞資料時型態的轉換是否有所差異 (我試過將char[] ae 改為 string ae 或者是在char[] ae 後面在加個'\0' ,但是他算出 來的結果都相同 ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.110.100
cole945:因為你的C++程式根本就寫錯了... 07/11 18:29
ireullin:請問錯在?... 07/12 10:13