API的C声明:
WINADVAPI
BOOL
WINAPI
CryptSignHashA(
HCRYPTHASH hHash,
DWORD dwKeySpec,
LPCSTR szDescription,
DWORD dwFlags,
BYTE *pbSignature,
DWORD *pdwSigLen
);我在VB中的声明
Public Declare Function CryptSignHash Lib "advapi32.dll" Alias "CryptSignHashA" _
(ByVal hHash As Long, _
ByVal dwKeySpec As Long, _
ByRef sDescription As String, _
ByVal dwFlags As Long, _
ByVal pbSignature As String, _
ByRef pdwSigLen As Long) _
As Integer
调用过程
ret = CryptAcquireContext(m_CryptProv, "", sCSPname, PROV_RSA_FULL, CRYPT_NEWKEYSET)
If ret <> CP_SUCCESS Then GoTo Error_Handle
Call AddInfo("CryptAcquireContext OK") ret = CryptGenKey(m_CryptProv, AT_SIGNATURE, 0, m_hKey)
ret = CryptCreateHash(m_CryptProv, CALG_SHA1, 0, 0, m_hHash)
ret = CryptHashData(m_hHash, "Test Hash Data", Len("Test Hash Data"), 0)
ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, vbNullString, dwDataLen)
pbSignature = String(dwDataLen, Chr(0))
ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, pbSignature , dwDataLen)
这时候,dwDataLen = 128,这个值跟是预期的长度,可是 pbSignature 是不可见字符串,用Len获取长度却是170.请问哪位知道问题出在哪里,谢谢啦!
WINADVAPI
BOOL
WINAPI
CryptSignHashA(
HCRYPTHASH hHash,
DWORD dwKeySpec,
LPCSTR szDescription,
DWORD dwFlags,
BYTE *pbSignature,
DWORD *pdwSigLen
);我在VB中的声明
Public Declare Function CryptSignHash Lib "advapi32.dll" Alias "CryptSignHashA" _
(ByVal hHash As Long, _
ByVal dwKeySpec As Long, _
ByRef sDescription As String, _
ByVal dwFlags As Long, _
ByVal pbSignature As String, _
ByRef pdwSigLen As Long) _
As Integer
调用过程
ret = CryptAcquireContext(m_CryptProv, "", sCSPname, PROV_RSA_FULL, CRYPT_NEWKEYSET)
If ret <> CP_SUCCESS Then GoTo Error_Handle
Call AddInfo("CryptAcquireContext OK") ret = CryptGenKey(m_CryptProv, AT_SIGNATURE, 0, m_hKey)
ret = CryptCreateHash(m_CryptProv, CALG_SHA1, 0, 0, m_hHash)
ret = CryptHashData(m_hHash, "Test Hash Data", Len("Test Hash Data"), 0)
ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, vbNullString, dwDataLen)
pbSignature = String(dwDataLen, Chr(0))
ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, pbSignature , dwDataLen)
这时候,dwDataLen = 128,这个值跟是预期的长度,可是 pbSignature 是不可见字符串,用Len获取长度却是170.请问哪位知道问题出在哪里,谢谢啦!
解决方案 »
- image控件如何加载不同格式的图片和图片的缩小和放大(急)
- 请一段简单的代码。。。实在不知道怎么写
- 串口显示问题和Access连接问题
- 请教关于MSFlexGrid中跳转到所查询数据的问题
- 急!!!!!!!VB中如何以Post方式提交表单??(一个网页的表单要用Post才能正确,VB中如何实现?)分数不够再加!!!!!!!!!!
- 数据回复问提:
- 关于写注册表(真的很急)
- 急!急!急!怎样建立一个带密码的Access数据库。并且在VB中用ADO打开他?急!
- 请问怎么把服务器上的网页全DOWN下来啊(当然是可以DOWN的)
- VB中日历控件要引用哪个.ocx?
- socket 编程遇到的问题!
- 两个点,起点,终点,如何画一个正絃曲线呢?
(ByVal hHash As Long, _
ByVal dwKeySpec As Long, _
ByVal sDescription As String, _
ByVal dwFlags As Long, _
ByRef pbSignature As Byte, _
ByRef pdwSigLen As Long) _
As Long ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, pbSignature(0) , dwDataLen)
我用1楼的方法试试……
谢了先