zoukankan      html  css  js  c++  java
  • nginx中使用 md5

    core/ngx_md5.h 头文件

    /*
     * Copyright (C) Igor Sysoev
     * Copyright (C) Nginx, Inc.
     */
    
    
    #ifndef _NGX_MD5_H_INCLUDED_
    #define _NGX_MD5_H_INCLUDED_
    
    
    #include <ngx_config.h>
    #include <ngx_core.h>
    
    
    #if (NGX_HAVE_MD5)
    
    #if (NGX_HAVE_OPENSSL_MD5_H)
    #include <openssl/md5.h>
    #else
    #include <md5.h>
    #endif
    
    
    typedef MD5_CTX  ngx_md5_t;
    
    
    #if (NGX_OPENSSL_MD5)
    
    #define ngx_md5_init    MD5_Init
    #define ngx_md5_update  MD5_Update
    #define ngx_md5_final   MD5_Final
    
    #else
    
    #define ngx_md5_init    MD5Init
    #define ngx_md5_update  MD5Update
    #define ngx_md5_final   MD5Final
    
    #endif
    
    
    #else /* !NGX_HAVE_MD5 */
    
    
    typedef struct {
        uint64_t  bytes;
        uint32_t  a, b, c, d;
        u_char    buffer[64];
    } ngx_md5_t;
    
    
    void ngx_md5_init(ngx_md5_t *ctx);
    void ngx_md5_update(ngx_md5_t *ctx, const void *data, size_t size);
    void ngx_md5_final(u_char result[16], ngx_md5_t *ctx);
    
    
    #endif
    
    #endif /* _NGX_MD5_H_INCLUDED_ */
    
    

    调用步骤

    ngx_md5_init(ngx_md5_t *ctx);
    
    //对长度为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);
    

    例子

    static int calculate_md5(ngx_str_t *str)
    {
    	ngx_md5_t     md5;
    	int           i;
    	char          md5_buf[16], md5_buf2[32], buf[1024];
    	
    	if (str->len <= 0 || str->len > sizeof(buf)) {
    		return -1;
    	}
    
    	memcpy(buf, str->data, str->len);
    
    	ngx_md5_init(&md5);
    	ngx_md5_update(&md5, buf, str->len);
    	ngx_md5_final(md5_buf, &md5);
    
    	//这里求得的md5_buf是16字节md5值,可以转成32字节的
    	for (i = 0; i < 16; i++){
    		sprintf(md5_buf2 + i*2, "%02X", md5_buf[i]);
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    软件工程个人作业01
    个人冲刺——(五)
    个人冲刺——(四)
    个人冲刺——(三)
    个人冲刺——(二)
    个人冲刺——(一)
    单词统计
    第十周学习总结
    第九周学习总结
    用户模板场景分析
  • 原文地址:https://www.cnblogs.com/shenlinken/p/10546567.html
Copyright © 2011-2022 走看看