Domino 9 und frühere Versionen > ND6: Entwicklung
Wie HASH Wert eines Anhangs bestimmen ?
eknori:
Habe jetzt mal eine einfach DLL erstellt, die auch nur eine Funktion enthält
In LS wird die function so deklariert:
--- Zitat ---Declare Function GetHash Lib "filehash" (Byval strFileName As String ) As String
--- Ende Zitat ---
Der Aufruft erfolgt dann über
--- Zitat ---Sub Click(Source As Button)
Msgbox GetHash ("e:\nstart.exe")
End Sub
--- Ende Zitat ---
Der Rückgabewert ist vom Typ String und liefert einen SHA2Strength(512) Wert zurück.
In der DLL sind diese Dinge momentan noch fest verdrahtet.
Das wird sich aber noch ändern. :D
Betrachtet die DLL einfach als kleines Spielzeug für zwischendurch.
Hier der source code der DLL
--- Zitat ---/*
DLL filehash.dll
*/
#include "CHash.cpp"
extern "C"
{
extern _declspec(dllexport)
char *GetHash ( char *fileName );
char *GetHash ( char *fileName )
{
try
{
CHash hashObj; // Define a CHash object
/* Set the algorithm
*/
hashObj.SetHashAlgorithm(SHA2);
/* Set hash format
*/
hashObj.SetHashFormat(3);
/* Set the SHA-2 strength
*/
hashObj.SetSHA2Strength(512);
/* Set the operation
*/
hashObj.SetHashOperation(FILE_HASH);
/* Set the file
*/
hashObj.SetHashFile(fileName);
/* Now HashIt !
*/
CString outHash;
outHash = hashObj.DoHash();
/*convert CString to char
*/
char * hash_char= new char[outHash.GetLength()+1];
strcpy(hash_char, outHash);
/* return hash_char
*/
return hash_char;
}
catch(...)
{
return "ERROR";
}
}
}
--- Ende Zitat ---
Und mit ein bisschen LS drumherum kann man sehr schön herausfinden, wie viele echte Dubletten eines Anhangs sich z.B. in der Maildatei befinden. ( übrigens 9 sec für eine Datei von 150MB über eim 100Mbit Netz )...
Kleine Anmerkung:
Der Quellcode ist hier natürlich nicht vollständig angebildet und so auch nicht kompilierbar. Ich weiss auch, daß man DLLs in CPP anders aufbauen kann; brauche hier aber keinen MFC support. Außerdem bleibt das auch für einen Anfänger in der dargestellten Form nachvollziehbar.
und hier die DLL zum Download ( ins System32 Verzeichnis der Win Installation kopieren )
flaite:
Das ist natürlich noch besser.
Bin mir aber nicht sicher, ob du die x.000.000 Hashs und DocUniques alle im Speicher halten kannst (weil zu viel und zu groß)?
Wenn du die nirgendwo zwischenspeichern willst, mußt du die im Speicher halten?
Ich weiss es nicht.
Nur so am Rande: Man könnte es auch in Java machen.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln