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