概述
1、环境
OpenSSL 版本:openssl-0.9.8d
请确保系统存在环境变量 SSL_ROOT, $SSL_ROOT/lib 存在 crypto 库文件,$SSL_ROOT/lib 已加入 LD_LIBRARY_PATH 中。
测试过的系统版本:RHEL 4.8 32 bit,AIX 5.3 64bit
2、源码
/*
* NumSysConvert.h
*
* 基于 Openssl crypto 库的加密/解密功能封装
*
* Created on: Mar 11, 2012
* Author: yeyuzhen<mail.yeyuzhen@gmail.com>
*/
#ifndef NUMSYSCONVERT_H_
#define NUMSYSCONVERT_H_
#include <iostream>
#include <string>
#include <openssl/x509v3.h>
/**
* @brief 二进制转十六进制
* @author
*/
inline std::string Bin2Hex(std::string _in)
{
std::string result;
const char hexdig[] = "0123456789ABCDEF";
if(_in.empty())
{
return result;
}
result.clear();
for(std::string::iterator i = _in.begin(); i != _in.end(); i++)
{
result.append(1, hexdig[(*i >> 4) & 0xf]); //留下高四位
result.append(1, hexdig[(*i & 0xf)]); //留下低四位
}
return result;
}
/**
* @brief 十六进制转二进制
* @author
*/
inline std::string Hex2Bin(std::string _in)
{
long int binSize = 0;
unsigned char *t = NULL;
std::string result;
t = string_to_hex((char *)_in.c_str(), &binSize); // 位于 x509v3.h
result.clear();
result.append((char *)t, binSize);
return result;
}
#endif /* NUMSYSCONVERT_H_ */
/*
* main.cpp
*
* 进制转换测试
*
*/
#include <iostream>
#include <string>
#include "NumSysConvert.h"
int main(int argc, char *argv[])
{
char Bin[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
std::string AllBin(Bin, 8);
std::cout << "All Hex:" << Bin2Hex(AllBin) << std::endl;
// 可查看内存值
// gdb 单步执行到 line 19
// (gdb) print AllBinResult
// 记下 string 的底层字符串 _M_p 地址 0x??????
// (gdb) x/8xb 0x??????
std::string AllHex("0123456789ABCDEF");
std::string AllBinResult = Hex2Bin(AllHex);
std::cout << "All Bin" << AllBinResult << std::endl;
// 非法十六进制转出的结果为空
std::string InvalidHex("XYZ0123456789ABCDEF");
std::cout << "Result Bin:" << Hex2Bin(InvalidHex) << std::endl;
return 0;
}
Makefile:
NumSysConvert:NumSysConvert.h main.cpp
g++ -g -o NumSysConvert -I$SSL_ROOT/include -L$SSL_ROOT/lib -lcrypto main.cpp
编辑记录:
V1.0 2012-4-24 12:52:04 初稿
最后
以上就是含糊山水为你收集整理的Openssl Crypto 加/解密功能封装之一:进制转换1、环境2、源码的全部内容,希望文章能够帮你解决Openssl Crypto 加/解密功能封装之一:进制转换1、环境2、源码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复