作者ireullin (raison detre)
看板C_Sharp
標題[問題] c# 與c++在傳遞資料時型態的轉換是否有所差異
時間Wed Jul 11 15:29:33 2007
請問一下各位大大
我今天有一個使用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