![]() |
![]() |
![]() |
GNet Network Library Reference Manual | ![]() |
---|---|---|---|---|
#include <gnet.h> GMD5; #define GNET_MD5_HASH_LENGTH GMD5* gnet_md5_new (const gchar *buffer, guint length); GMD5* gnet_md5_new_string (const gchar *str); GMD5* gnet_md5_clone (const GMD5 *md5); void gnet_md5_delete (GMD5 *md5); GMD5* gnet_md5_new_incremental (void); void gnet_md5_update (GMD5 *md5, const gchar *buffer, guint length); void gnet_md5_final (GMD5 *md5); gboolean gnet_md5_equal (gconstpointer p1, gconstpointer p2); guint gnet_md5_hash (gconstpointer p); gchar* gnet_md5_get_digest (const GMD5 *md5); gchar* gnet_md5_get_string (const GMD5 *md5); void gnet_md5_copy_string (const GMD5 *md5, gchar *buffer);
The MD5 module provide support for computing and manipulating MD5 hashes. MD5 is a hash function with a very low probability of collision. MD5 is considered weaker than SHA.
An MD5 can be calculated at one time or incrementally. To create a
MD5 at one time, call gnet_md5_new()
with the data. To create a MD5
incrementally, call gnet_md5_new_incremental()
to create the MD5
object, then gnet_md5_update()
one or more times with data to hash,
and finally call gnet_md5_final()
.
To get the digest, or hash value, call gnet_md5_get_digest()
. This
returns the raw digest as an array of GNET_MD5_HASH_LENGTH
bytes. To
get the digest as a human-readable hexidecimal string, call
gnet_md5_get_string()
or gnet_md5_copy_string()
.
gchar buffer[] = "Hello world!"; gchar buffer2[] = "Second line"; GMD5* md5; gchar* md5_str; /* Compute an MD5 at one time */ md5 = gnet_md5_new (buffer, strlen(buffer)); md5_str = gnet_md5_get_string (md5); g_print ("The MD5 of %s is %s\n", buffer, md5_str); /* Use MD5... */ g_free (md5_str); gnet_md5_delete (md5); /* Compute an MD5 incrementally */ md5 = gnet_md5_new_incremental (); gnet_md5_update (md5, buffer, strlen(buffer)); gnet_md5_update (md5, buffer2, strlen(buffer2)); gnet_md5_final (md5); /* Use MD5... */ gnet_md5_delete (md5);
GMD5* gnet_md5_new (const gchar *buffer, guint length);
Creates a GMD5 from buffer
.
buffer : |
buffer to hash |
length : |
length of buffer
|
Returns : | a new GMD5. |
GMD5* gnet_md5_new_string (const gchar *str);
Creates a GMD5 from str
. str
is a hexidecimal string
representing the digest.
str : |
hexidecimal string |
Returns : | a new GMD5. |
GMD5* gnet_md5_clone (const GMD5 *md5);
Copies a GMD5.
md5 : |
a GMD5 |
Returns : | a copy of md5 .
|
GMD5* gnet_md5_new_incremental (void);
Creates a GMD5 incrementally. After creating a GMD5, call
gnet_md5_update()
one or more times to hash data. Finally, call
gnet_md5_final()
to compute the final hash value.
Returns : | a new GMD5. |
void gnet_md5_update (GMD5 *md5, const gchar *buffer, guint length);
Updates the hash with buffer
. This may be called several times
on a hash created by gnet_md5_new_incremental()
before being
finalized by calling gnet_md5_final()
.
md5 : |
a GMD5 |
buffer : |
buffer to add |
length : |
length of buffer
|
void gnet_md5_final (GMD5 *md5);
Calcuates the final hash value of a GMD5. This should only be
called on an GMD5 created by gnet_md5_new_incremental()
.
md5 : |
a GMD5 |
gboolean gnet_md5_equal (gconstpointer p1, gconstpointer p2);
Compares two GMD5's for equality.
guint gnet_md5_hash (gconstpointer p);
Creates a hash code for a GMD5 for use with GHashTable. This hash value is not the same as the MD5 digest.
p : |
a GMD5 |
Returns : | the hash code for p .
|
gchar* gnet_md5_get_digest (const GMD5 *md5);
Gets the raw MD5 digest.
md5 : |
a GMD5 |
Returns : | a callee-owned buffer containing the MD5 hash digest.
The buffer is GNET_MD5_HASH_LENGTH bytes long.
|
gchar* gnet_md5_get_string (const GMD5 *md5);
Gets the digest represented a human-readable string.
md5 : |
a GMD5 |
Returns : | a hexadecimal string representing the digest. The string
is 2 * GNET_MD5_HASH_LENGTH bytes long and NULL terminated. The
string is caller owned.
|
void gnet_md5_copy_string (const GMD5 *md5, gchar *buffer);
Copies the digest, represented as a string, into buffer
. The
string is not NULL terminated.
md5 : |
a GMD5 |
buffer : |
buffer at least 2 * GNET_MD5_HASH_LENGTH bytes long
|