base64 encode decode
来源:互联网 发布:婴儿创意照片软件 编辑:程序博客网 时间:2024/06/05 03:17
base64.h
#include <string>#ifndef _BASE64_H_#define _BASE64_H_std::string base64_encode(unsigned char const* , unsigned int len);std::string base64_decode(std::string const& s);#endif
base64.cpp
/* base64.cpp and base64.h Copyright (C) 2004-2008 Ren Nyffenegger rene.nyffenegger@adp-gmbh.ch */ #include "base64.h" #include <iostream> static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; static inline bool is_base64(unsigned char c) { return (isalnum(c) || (c == '+') || (c == '/')); } std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { std::string ret; int i = 0, j = 0; unsigned char char_array_3[3], char_array_4[4]; while (in_len--) { char_array_3[i++] = *(bytes_to_encode++); if (i == 3) { char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); char_array_4[3] = char_array_3[2] & 0x3f; for(i = 0; (i <4) ; i++) ret += base64_chars[char_array_4[i]]; i = 0; } } if (i) { for(j = i; j < 3; j++) char_array_3[j] = '\0'; char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); char_array_4[3] = char_array_3[2] & 0x3f; for (j = 0; (j < i + 1); j++) ret += base64_chars[char_array_4[j]]; while((i++ < 3)) ret += '='; } return ret; } std::string base64_decode(std::string const& encoded_string) { int in_len = encoded_string.size(); int i = 0, j = 0, in_ = 0; unsigned char char_array_4[4], char_array_3[3]; std::string ret; while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { char_array_4[i++] = encoded_string[in_]; in_++; if (i ==4) { for (i = 0; i <4; i++) char_array_4[i] = base64_chars.find(char_array_4[i]); char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; for (i = 0; (i < 3); i++) ret += char_array_3[i]; i = 0; } } if (i) { for (j = i; j <4; j++) char_array_4[j] = 0; for (j = 0; j <4; j++) char_array_4[j] = base64_chars.find(char_array_4[j]); char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; } return ret; }
0 0
- base64 encode decode
- python3 encode decode base64
- indy base64 encode decode
- Base64 encode/decode large file
- NSString urlEncode decode base64 encode decode
- Base64 Encode/Decode C/C++ 实现
- Base64 Encode/Decode in C/C++
- python base64 encode and decode image
- base64加密,解密,encode,decode,编码详解+实现
- How to encode decode String in Java base64 Encoding
- Java中导入Base64 encode and decode包并使用
- iOS 7: Base64 Encode and Decode NSData and NSString Objects
- Java如何进行Base64的编码(Encode)与解码(Decode)?
- 基于VBS、ASP环境下的BASE64 Encode 和 Decode
- Java如何进行Base64的编码(Encode)与解码(Decode)
- encode decode
- encode decode
- Base64 encode
- Layout_weight详解
- 将模式对话框的返回值回送(PostBack)到服务端
- 给新入职的网络工程师忠告,你和公司要求差得不是一点点!!!
- android4.0以上webview加载SSl证书兼容性问题
- 利用Helix Server的SMIL支持在ASP中生成媒体流的播放列表
- base64 encode decode
- windows调用与dos调用区别
- C++ 虚函数表解析
- windowSoftInputMode属性设置值
- 什么是script语言
- xls文件上传
- Android 使用Service 及 BroadcastReceiver 监听Volume
- struts2.0 el不起作用
- (3)2014微软编程之美初赛第二场赛题