如題,求獲取字串SHA1值的DLL,我下載的PB加密解密中的 pbfunc.dll,字串含中文的話,取出的值不正確。
謝謝各位了。
uj5u.com熱心網友回復:
在api宣告里要加上ansi如
ulong GetSystemDirectoryA(ref string wdir, ulong buf) LIBRARY "kernel32.dll"
改為
Function uint GetSystemDirectory(ref string lpBuffer,uint uSize) Library 'kernel32.dll' Alias for 'GetSystemDirectoryA;ansi'
uj5u.com熱心網友回復:
樓主的pb版本是幾?是pb0及以上的將pb的宣告后面加alias for "xxx;ansi",或者你將demo直接用pb升級上去,ide會自動幫你添加的例如
function long MD5(string str,ref string md5content) library "pbfunc.dll" alias for "MD5;Ansi"
function long SHA1(string str,ref string content) library "pbfunc.dll" alias for "SHA1;Ansi"
function long RIPEMD160(string str,ref string content) library "pbfunc.dll" alias for "RIPEMD160;Ansi"
function long SHA256(string str,ref string content) library "pbfunc.dll" alias for "SHA256;Ansi"
function long Tiger(string str,ref string content) library "pbfunc.dll" alias for "Tiger;Ansi"
function long SHA512(string str,ref string content) library "pbfunc.dll" alias for "SHA512;Ansi"
function long Whirlpool(string str,ref string content) library "pbfunc.dll" alias for "Whirlpool;Ansi"
function long CRC32(string str,ref string content) library "pbfunc.dll" alias for "CRC32;Ansi"
uj5u.com熱心網友回復:
各位老師,我宣告是這樣的:function long SHA1(string str,ref string content) library "pbfunc.dll" alias for "SHA1;Ansi"譬如字串“測驗”,呼叫pbfunc.dll 得到sha1值是“B9B0EC5E6872C2237692F22DD052409450A81B60”
但是別人的值是“0B5D7ED54BEE16756A7579C6718AB01E3D1B75EB”,謝謝大家
uj5u.com熱心網友回復:
你用SQLServer2005的那陳述句回傳跟這個dll的試試看結果,跟別人不同,不一定是這個dll的問題,沒有懷疑過對方?SqlServer2005:
select sys.fn_varbintoHexStr(hashbytes('SHA1','測驗'))
uj5u.com熱心網友回復:
我試了一下,你要先把字串轉換成utf-8這樣就可以回傳來是0B5D7ED54BEE16756A7579C6718AB01E3D1B75EB了代碼如下:
外部呼叫宣告
function long SHA1(blob str,ref string content) library "pbfunc.dll" alias for "SHA1;Ansi"
function long GbkToUtf8(string src,ref blob utf8,ref long l) library "pbfunc.dll" alias for "GbkToUtf8;Ansi"
代碼
string ls_content
string data
blob utf8,utf8R
string gbk
data =sle_1.text
utf8 = Blob(space((len(data )+1) * 2))//GBK轉成UTF8時,先分配下空間用來存放utf-8
long ll_tf8Len//utf8內容長度
GbkToUtf8(data,utf8,ll_tf8Len)
utf8R = BlobMid (utf8,1,ll_tf8Len)//真正的utf8內容
IF SHA1(utf8R,ls_content) = 1 Then//計算SHA1
sle_3.Text =ls_content
Else
sle_3.Text ="錯誤"
End IF
如果你那邊的dll沒有GbkToUtf8這個函式,你私信我
uj5u.com熱心網友回復:
樓上那個dll,運行第二次的時候就死機啊,求解決辦法uj5u.com熱心網友回復:
我也是的。自己想辦法解決了!uj5u.com熱心網友回復:
樓上能否把我一下?qq:1506634283謝謝uj5u.com熱心網友回復:
http://download.csdn.net/detail/my_aa/8458299這里下載,解決utf8出錯的問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/38398.html
標籤:API 調用
