登録日時: 2005年6月01日(水) 21:51 記事: 212
お住まい: 奈良県北西部
|
ねこでもわかるプログラミングの第 263 章~第 266 章
を見ながらやっているのですが、
Dim 宣言している変数が、
"無効な識別子です" と出てしまいます。
何がいけないのでしょうか?
グローバル領域 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: TypeDef ALG_ID = Long
TypeDef HCRYPTHASH = HANDLE
TypeDef HCRYPTKEY = HANDLE
TypeDef HCRYPTPROV = HANDLE
Const _WIN32_WINNT = &H0500
Const CRYPT_EXPORTABLE = &H00000001
Const PROV_RSA_FULL=1
Const AT_KEYEXCHANGE=1
Const ALG_TYPE_BLOCK=1536
Const ALG_CLASS_DATA_ENCRYPT=24576
Const ALG_SID_RC2=2
Const CALG_RC2=ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_RC2
Const SIMPLEBLOB=&H1
Const MS_DEF_PROV_A="Microsoft Base Cryptographic Provider v1.0"
Const MS_DEF_PROV_W="Microsoft Base Cryptographic Provider v1.0"
Const CRYPT_NEWKEYSET=&H00000008
Const AT_SIGNATURE=2
#Ifdef UNICODE
Const MS_DEF_PROV=MS_DEF_PROV_W
Const _FuncName_CryptAcquireContext = "CryptAcquireContextW"
#Else
Const MS_DEF_PROV=MS_DEF_PROV_A
Const _FuncName_CryptAcquireContext = "CryptAcquireContextA"
#endIf
Declare Function CryptAcquireContext Lib "advapi32" Alias _FuncName_CryptAcquireContext (phProv As *HCRYPTPROV, pszContainer As BytePtr, pszProvider As BytePtr, dwProvType As DWord, dwFlags As DWord) As BOOL
Declare Function CryptDecrypt Lib "advapi32" (hKey As HCRYPTKEY, hHash As HCRYPTHASH, Final As BOOL, dwFlags As DWord, pbData As BytePtr, pdwDataLen As DWordPtr) As BOOL
Declare Function CryptDestroyKey Lib "advapi32" (hKey As HCRYPTKEY) As BOOL
Declare Function CryptEncrypt Lib "advapi32" (hKey As HCRYPTKEY, hHash As HCRYPTHASH, Final As Long, dwFlags As DWord, pbData As BytePtr, pdwDataLen As *DWord, dwBufLen As DWord) As BOOL
Declare Function CryptExportKey Lib "advapi32" (hKey As HCRYPTKEY, hExpKey As HCRYPTKEY, dwBlobType As DWord, dwFlags As DWord, pbData As BytePtr, pdwbDataLen As *DWord) As BOOL
Declare Function CryptGenKey Lib "advapi32" (hProv As HCRYPTPROV, algid As ALG_ID, dwFlags As DWord, phKey As *HCRYPTKEY) As BOOL
Declare Function CryptGetUserKey Lib "advapi32" (hProv As HCRYPTPROV, dwKeySpec As DWord, phUserKey As *HCRYPTKEY) As BOOL
Declare Function CryptImportKey Lib "advapi32" (hProv As HCRYPTPROV, pbData As BytePtr, dwDataLen As DWord, hPubKey As HCRYPTKEY, dwFlags As DWord, phKey As *HCRYPTKEY) As BOOL
Declare Function CryptReleaseContext Lib "advapi32" (hProv As HCRYPTPROV, dwFlags As DWord) As BOOL
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: Function Export Encrypt(hWnd As HWND, Temp As BytePtr, Out As BytePtr) As BOOL
Dim hOrg As HANDLE, hAfter As HANDLE
Dim pbBuf[ELM(4096)] As Byte
Dim bEnd = FALSE As Long
Dim hCryptprov As HCRYPTPROV
Dim hExKey As HCRYPTKEY, hKey As HCRYPTKEY
Dim dwByte As DWord, dwResult As DWord
Dim ofn As OPENFILENAME
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize = Len(ofn)
ofn.lpstrFile = Temp
ofn.nMaxFile = MAX_PATH
ofn.Flags = OFN_FILEMUSTEXIST or OFN_HIDEREADONLY
If CryptAcquireContext(VarPtr(hCryptprov), NULL, NULL, PROV_RSA_FULL, 0) = FALSE Then
MessageBox(NULL, "CryptAcquireContext Error", "Error", MB_OK)
Return FALSE
End If
If CryptGetUserKey(hCryptprov, AT_KEYEXCHANGE, VarPtr(hExKey)) = FALSE Then
MessageBox(NULL, "CryptGetUserKey Error", "Error", MB_OK)
Return FALSE
End If
If CryptGenKey(hCryptprov, CALG_RC2, CRYPT_EXPORTABLE, VarPtr(hKey)) = FALSE Then
MessageBox(NULL, "CryptGenKey Error", "Error", MB_OK)
Return FALSE
End If
CryptExportKey(hKey, hExKey, SIMPLEBLOB, 0, NULL, VarPtr(dwByte))
If CryptExportKey(hKey, hExKey, SIMPLEBLOB, 0, pbBuf, VarPtr(dwByte)) = FALSE Then
MessageBox(NULL, "CryptExportKey Error", "Error", MB_OK)
Return FALSE
End If
hOrg = CreateFile(Temp, GENERIC_READ, FILE_SHARE_READ, ByVal NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
hAfter = CreateFile(Out, GENERIC_WRITE, FILE_SHARE_READ, ByVal NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
WriteFile(hAfter, VarPtr(dwByte), Len(dwByte), VarPtr(dwResult), ByVal NULL)
WriteFile(hAfter, pbBuf, dwByte, Varptr(dwResult), ByVal NULL)
While 1
ReadFile(hOrg, pbBuf, SizeOf(Byte)*4096, VarPtr(dwByte), ByVal NULL)
If dwByte < Len(pbBuf) Then
bEnd = TRUE
End If
CryptEncrypt(hKey, 0, bEnd, 0, pbBuf, VarPtr(dwByte), SizeOf(Byte)*4096)
WriteFile(hAfter, pbBuf, dwByte, VarPtr(dwResult), ByVal NULL)
If bEnd Then
Exit While
End If
Wend
CryptDestroyKey(hKey)
CryptDestroyKey(hExKey)
CryptReleaseContext(hCryptprov, 0)
CloseHandle(hOrg)
CloseHandle(hAfter)
Return TRUE
End Function
※コードを見ればわかりますが、DLL でやっています。
最後に編集したユーザー M.S. [ 2008年3月29日(土) 19:32 ], 累計 3 回
|
|