導航:首頁 > 版本升級 > 取文件md5api

取文件md5api

發布時間:2025-01-14 00:38:01

1. vb 怎麼獲取文件MD5

Option Explicit
Private Declare Function CryptAcquireContext Lib "advapi32.dll" _
Alias "CryptAcquireContextA" ( _
ByRef phProv As Long, _
ByVal pszContainer As String, _
ByVal pszProvider As String, _
ByVal dwProvType As Long, _
ByVal dwFlags As Long) As Long
Private Declare Function CryptReleaseContext Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal dwFlags As Long) As Long
Private Declare Function CryptCreateHash Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal Algid As Long, _
ByVal hKey As Long, _
ByVal dwFlags As Long, _
ByRef phHash As Long) As Long
Private Declare Function CryptDestroyHash Lib "advapi32.dll" ( _
ByVal hHash As Long) As Long
Private Declare Function CryptHashData Lib "advapi32.dll" ( _
ByVal hHash As Long, _
pbData As Any, _
ByVal dwDataLen As Long, _
ByVal dwFlags As Long) As Long

Private Declare Function CryptGetHashParam Lib "advapi32.dll" ( _
ByVal hHash As Long, _
ByVal dwParam As Long, _
pbData As Any, _
pdwDataLen As Long, _
ByVal dwFlags As Long) As Long
Private Const PROV_RSA_FULL = 1
Private Const CRYPT_NEWKEYSET = &H8
Private Const ALG_CLASS_HASH = 32768
Private Const ALG_TYPE_ANY = 0
Private Const ALG_SID_MD2 = 1
Private Const ALG_SID_MD4 = 2
Private Const ALG_SID_MD5 = 3
Private Const ALG_SID_SHA1 = 4
Enum HashAlgorithm
MD2 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD2
MD4 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD4
MD5 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5
SHA1 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA1
End Enum
Private Const HP_HASHVAL = 2
Private Const HP_HASHSIZE = 4
Function HashFile( _
ByVal FileName As String, _
Optional ByVal Algorithm As HashAlgorithm = MD5) As String
Dim hCtx As Long
Dim hHash As Long
Dim lFile As Long
Dim lRes As Long
Dim lLen As Long
Dim lIdx As Long
Dim abHash() As Byte
If Len(Dir$(FileName)) = 0 Then Err.Raise 53

lRes = CryptAcquireContext(hCtx, vbNullString, _
vbNullString, PROV_RSA_FULL, 0)

If lRes = 0 And Err.LastDllError = &H80090016 Then

lRes = CryptAcquireContext(hCtx, vbNullString, _
vbNullString, PROV_RSA_FULL, CRYPT_NEWKEYSET)
End If

If lRes <> 0 Then
lRes = CryptCreateHash(hCtx, Algorithm, 0, 0, hHash)
If lRes <> 0 Then
lFile = FreeFile

Open FileName For Binary As lFile

If Err.Number = 0 Then

Const BLOCK_SIZE As Long = 32 * 1024& ' 32K
ReDim abBlock(1 To BLOCK_SIZE) As Byte
Dim lCount As Long
Dim lBlocks As Long
Dim lLastBlock As Long

lBlocks = LOF(lFile) \ BLOCK_SIZE

lLastBlock = LOF(lFile) - lBlocks * BLOCK_SIZE

For lCount = 1 To lBlocks

Get lFile, , abBlock

lRes = CryptHashData(hHash, abBlock(1), BLOCK_SIZE, 0)

If lRes = 0 Then Exit For

Next
If lLastBlock > 0 And lRes <> 0 Then

ReDim abBlock(1 To lLastBlock) As Byte
Get lFile, , abBlock

lRes = CryptHashData(hHash, abBlock(1), lLastBlock, 0)

End If

Close lFile

End If
If lRes <> 0 Then

lRes = CryptGetHashParam(hHash, HP_HASHSIZE, lLen, 4, 0)
If lRes <> 0 Then
ReDim abHash(0 To lLen - 1)
lRes = CryptGetHashParam(hHash, HP_HASHVAL, abHash(0), lLen, 0)
If lRes <> 0 Then
For lIdx = 0 To UBound(abHash)
HashFile = HashFile & _
Right$("0" & Hex$(abHash(lIdx)), 2)
Next
End If
End If
End If
CryptDestroyHash hHash
End If

End If
CryptReleaseContext hCtx, 0
If lRes = 0 Then Err.Raise Err.LastDllError
End Function

調用測試:
Private Sub Form_Load()
MsgBox HashFile("C:\windows\explorer.exe")
End Sub

2. md5_file — 計算指定文件的 MD5 散列值

總結後的知識希望能幫到你:
函數名:md5_file
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
md5_file — 計算指定文件的 MD5 散列值
說明
md5_file ( string $filename , bool $raw_output = false ) : string
使用 » RSA 數據安全公司的 MD5 報文演算法計算 filename 文件的 MD5 散列值並返回。該散列值為 32 字元的十六進制數字。
參數
filename
文件名
raw_output
如果被設置為 true,那麼報文摘要將以原始的 16 位二進制格式返回。
返回值
成功返回字元串,否則返回 false。
更新日誌
版本 說明
5.1.0 函數改用流 API。這意味著能夠配合封裝器使用該函數,比如 md5_file('http://example.com/..')。
範例
示例 #1 md5_file() 使用範例

3. Nodejs怎麼獲取上傳文件的MD5

可以使用第三方的js庫,比如spark-md5.js。上傳文件後,調用對應的api即可以獲取到上傳文件的md5。

4. java有提供獲取一個壓縮文件的MD5驗證碼的API嗎

JAVA 的MD5加耐答密演算法源代碼

import java.security.*;
import java.security.spec.*;

class MD5_Test{

public final static String MD5(String s){
char hexDigits[] = {
'0', '1', '2', '3', '4', '5'慧旦, '6', '7', '8', '9', 'a', 'b', '昌碧慧c', 'd',
'e', 'f'};
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e){
return null;
}
}
public static void main(String[] args){
//MD5_Test aa = new MD5_Test();

System.out.print(MD5_Test.MD5("XX"));
}

閱讀全文

與取文件md5api相關的資料

熱點內容
r讀取excel文件 瀏覽:363
上古卷軸5控制台附魔代碼 瀏覽:514
緩存文件合並找不到文件 瀏覽:871
桌面保存一下文件找不到 瀏覽:645
程序美工標准 瀏覽:191
漂流瓶的文件在哪裡 瀏覽:319
數據的正負偏差怎麼計算 瀏覽:242
文件名用不用帶TXT 瀏覽:968
小米十數據線是哪個 瀏覽:463
caddws文件 瀏覽:962
js獲取復選框是否選中 瀏覽:289
wps查文件路徑 瀏覽:28
ps作圖完成後怎麼保存文件 瀏覽:429
文件路徑是怎麼產生的 瀏覽:947
word最後一行對不齊 瀏覽:743
股字程序 瀏覽:492
製作樣板文件的步驟有哪些 瀏覽:468
手機sdcard可以刪除哪些文件 瀏覽:328
js數組復制去除引用 瀏覽:29
javascript清除session 瀏覽:941

友情鏈接