kmd5.c
最終更新:2009/10/10
001: /* kmd5.c 002: * MD5 と BASE64 の例 003: * MD5: apr_md5 004: * BASE64: apr_base64_encode / apr_base64_encode_len 005: */ 006: 007: #define USAGE "Usage: kmd5.exe <keyword>\n" 008: 009: #include "apr_general.h" 010: #include "apr_file_io.h" 011: #include "apr_errno.h" 012: 013: #include "apr_md5.h" 014: #include "apr_base64.h" 015: 016: #include "mystab.h" 017: 018: #define ERROR_BUF_SIZE 1024 019: 020: int apr_my_main (int ac, char **av, apr_file_t * astdin, apr_file_t * astdout, apr_file_t * astderr, apr_pool_t * pool) { 021: 022: char error_buf[ERROR_BUF_SIZE]; 023: apr_status_t statcode; 024: 025: unsigned char *data; 026: unsigned char *encodedData; 027: 028: 029: if (ac < 2) { 030: apr_file_printf(astderr, USAGE); 031: goto _ERROR_; 032: } 033: 034: /* 035: * INCLUDE: apr_md5.h 036: * LIBS: libapr-1.lib libaprutil-1.lib 037: */ 038: 039: { 040: unsigned char digest[APR_MD5_DIGESTSIZE]; 041: char *input = av[1]; 042: apr_size_t inputLen = strlen(input); 043: if (APR_SUCCESS != (statcode = apr_md5(digest, input, inputLen))) { 044: apr_file_printf(astderr, "ERROR: apr_md5: %s\n", apr_strerror(statcode, error_buf, ERROR_BUF_SIZE)); 045: goto _ERROR_; 046: } 047: 048: { 049: int i; 050: apr_file_printf(astdout, "HEX DUMP: ["); 051: for (i=0; i<APR_MD5_DIGESTSIZE; i++) 052: apr_file_printf(astdout, "%02X", digest[i]); 053: apr_file_printf(astdout, "]\n"); 054: } 055: data = digest; 056: } 057: 058: /* apr_base64_encode / apr_base64_encode_len 059: * INCLUDE: apr_base64.h 060: * LIBS: libapr-1.lib libaprutil-1.lib 061: */ 062: 063: if (data) { 064: char *input = data; 065: int inputLen = APR_MD5_DIGESTSIZE; 066: 067: char *encoded; 068: apr_size_t encLen=apr_base64_encode_len(inputLen); 069: 070: encoded = apr_palloc(pool, encLen); 071: memset(encoded, 0, encLen); 072: 073: if ((apr_base64_encode(encoded, input, inputLen))<=0) { 074: goto _ERROR_; 075: } 076: 077: encodedData = encoded; 078: } 079: 080: apr_file_printf(astdout, "BASE64: [%s][%dbytes]\n", encodedData, strlen(encodedData)); 081: 082: apr_file_printf(astdout, "\ndone.\n"); 083: 084: return 0; /* 正常終了 */ 085: 086: _ERROR_: 087: apr_file_printf(astderr, "failed!\n"); 088: return 1; /* 異常終了 */ 089: } 090:
KAKU PROJECT (2009) |