首页 > 系统相关 >实验一 Windows

实验一 Windows

时间:2024-03-27 20:58:33浏览次数:29  
标签:BIO bmem Windows newLine char length 实验 input

加分项:在Windows中编译OpenSSL

链接openssl设置


编译运行

OpenSSL 使用 base64 编码/解码

#include <openssl/evp.h>
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <string.h>
#include <iostream>

using namespace std;

char * base64Encode(const char *buffer, int length, bool newLine);
char * base64Decode(char *input, int length, bool newLine);

int main(int argc, char* argv[])
{
	bool newLine = false;
	string input = "Hello World!";

	char * encode = base64Encode(input.c_str(), input.length(), newLine);
	char * decode = base64Decode(encode, strlen(encode), newLine);

	cout << "Base64 Encoded : " << encode << endl;
	cout << "Base64 Decoded : " << decode << endl;

	cin.get();
	return 0;
}

// base64 编码
char * base64Encode(const char *buffer, int length, bool newLine)
{
	BIO *bmem = NULL;
	BIO *b64 = NULL;
	BUF_MEM *bptr;

	b64 = BIO_new(BIO_f_base64());
	if (!newLine) {
		BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
	}
	bmem = BIO_new(BIO_s_mem());
	b64 = BIO_push(b64, bmem);
	BIO_write(b64, buffer, length);
	BIO_flush(b64);
	BIO_get_mem_ptr(b64, &bptr);
	BIO_set_close(b64, BIO_NOCLOSE);

	char *buff = (char *)malloc(bptr->length + 1);
	memcpy(buff, bptr->data, bptr->length);
	buff[bptr->length] = 0;
	BIO_free_all(b64);

	return buff;
}

// base64 解码
char * base64Decode(char *input, int length, bool newLine)
{
	BIO *b64 = NULL;
	BIO *bmem = NULL;
	char *buffer = (char *)malloc(length);
	memset(buffer, 0, length);
	b64 = BIO_new(BIO_f_base64());
	if (!newLine) {
		BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
	}
	bmem = BIO_new_mem_buf(input, length);
	bmem = BIO_push(b64, bmem);
	BIO_read(bmem, buffer, length);
	BIO_free_all(bmem);

	return buffer;
}

输出如下所示:

Base64 Encoded : SGVsbG8gV29ybGQh
Base64 Decoded : Hello World!

标签:BIO,bmem,Windows,newLine,char,length,实验,input
From: https://www.cnblogs.com/summerjam-land/p/18100197

相关文章

  • 实验一
    openssl安装openEuleropenssl安装8位学号文件夹Ubuntu8位学号文件夹openEulertest_openssl.c  ......
  • 增强的python控制windows命令行程序
    之前写过一篇关于python控制命令行的程序:python控制windows命令行程序使用之后发现,对于普通内置dos命令没有问题,但是对于有些控制台程序没有作用,比如python程序,就捕获不到输出信息.经过查阅相关资料,发现有些控制台程序需要真正的终端才能够正常运行.windows有一个......
  • .NET开源免费、功能强大的 Windows 截图录屏神器
    前言今天大姚给大家分享一款.NET开源免费(基于GPL3.0开源协议)、功能强大、简洁灵活的Windows截图、录屏、Gif动图制作神器:ShareX。功能特性ShareX是一个开源的屏幕捕捉工具,具有丰富的功能特性,包括但不限于:屏幕截图:支持全屏、窗口、矩形区域等多种截图模式,可快速捕捉屏幕......
  • 实验一 密码引擎-1-OpenEuler-OpenSSL编译
    安装Ubuntu和OpenEuler虚拟机下载最新的OpenSSL源码(3.2.1版本)用自己的8位学号建立一个文件夹,cd你的学号,用pwd获得绝对路径参考https://www.cnblogs.com/rocedu/p/5087623.html先在Ubuntu中完成OpenSSL编译安装,然后在OpenEuler中重现./config--prefix=..(学号目录......
  • 第四周实验
    人工智能鱼比赛比赛流程:报名时间:5月末至六月末;赛前培训:九月末;初赛:11月初;决赛和获奖作品公示:12月初。比赛要求:参赛者要求:上海海洋大学在读学生,包含在校本科生、研究生等。以2-4人小组为单位报名,提倡跨学院组队。获奖作品:以2018年获奖作品为例,项目分别从基于VR和AR的海洋科......
  • 实验一——波士顿房价预测
    具体代码(Python版本)#coding:utf-8#importtensorflowastfimporttensorflow.compat.v1astftf.disable_v2_behavior()fromsklearn.datasetsimportload_bostonimportmatplotlib.pyplotaspltimportmatplotlibmatplotlib.use('TkAgg')fromsklearn.......
  • 实验二——鸢尾花分类预测
    具体代码(Python版本)importnumpyasnp#导入numpy库,用于进行数值计算importmatplotlib.pyplotasplt#导入matplotlib库,用于绘制图形fromsklearnimportdatasets#从sklearn库中导入datasets模块,用于加载数据集fromsklearn.model_selectionim......
  • Windows的Linux子系统迁移
    默认Windows的Linux子系统(WSL)安装的C盘,如果有用作Docker镜像制作很容易磁盘不够用。可采取如下步骤迁移(以下在WindowsPowerShell中进行的,但在CMD.exe中执行效果相同):1、执行一下命令查看Linux子系统的发行版名称(distroname)PSD:\>wsl-l-vNAME......
  • .net6 core web项目发布部署到IIS,以Windows服务的形式部署启动,报错1053,报1067错误解
    安装NuGet包Microsoft.Extensions.Hosting.WindowsServices  varbuilder=WebApplication.CreateBuilder(newWebApplicationOptions{ContentRootPath=AppContext.BaseDirectory,Args=args});//Addservicestothecontainer.builder.Services.Add......
  • windows电脑
    windows电脑一、清理C盘1.win+R进入%temp%2.win+R进入prefetch3.进入C:\Windows\SoftwareDistribution\Download4.以管理员身份打开命令行窗口输入powercfg-hoff关闭休眠文件hiberfil.sys二、禁止更新打开注册表编辑器进入\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Window......