本节我们主要讲述一下nginx中md5相关操作:
1. core/ngx_md5.h头文件
1.1 相关宏定义
在auto/ngx_auto_config.h头文件中,有如下定义:
#ifndef NGX_HAVE_OPENSSL_MD5_H
#define NGX_HAVE_OPENSSL_MD5_H 1
#endif
#ifndef NGX_OPENSSL_MD5
#define NGX_OPENSSL_MD5 1
#endif
#ifndef NGX_HAVE_MD5
#define NGX_HAVE_MD5 1
#endif
因此这里我们使用的是openssl的md5。
这里总共有3中md5实现:
-
openssl md5
-
系统md5实现
-
nginx本身md5实现
1.2 md5调用步骤
一般md5调用步骤如下:
ngx_md5_init(ngx_md5_t *ctx);
//多次调用update(),对长度为size的data数据更新ctx
ngx_md5_update(ngx_md5_t *ctx, const void *data, size_t size);
//产生16字节长的md5值
ngx_md5_final(u_char result[16], ngx_md5_t *ctx);