zoukankan      html  css  js  c++  java
  • OpenEuler树莓派基础实验

    OpenEuler树莓派基础实验

    1.任务详情

    1. 参考https://www.cnblogs.com/rocedu/p/14615565.html 完成OpenEuler的安装,提交过程博客和截图
    2. 参考https://www.cnblogs.com/rocedu/p/14617763.html完成OpenSSL的安装,并测试,提交代码截图
    3. 参考附件,至少完成第三章的实验,提交过程博客链接
    

    2.树莓派Openeuler安装

    在安装开始前,需要获取Openeuler发布的树莓派镜像文件及其校验文件。

    1.访问

    社区获取下载链接。

    2.单击上方“下载”中的“镜像列表”。

    image-20211019140925260

    3.找到自己能够访问的镜像节点,这里我进入的是北京的节点,选择一个最新的镜像文件。

    image-20211019143349450

    image-20211019143459055

    3.单击“raspi_img”,进入树莓派镜像的下载列表。(aarch64:AArch64 架构的镜像)

    image-20211019143903435

    4.下载镜像文件和镜像校验文件。

    image-20211019144013483

    5.对镜像文件的完整性进行校验,操作步骤如下:

    1. 获取校验文件中的校验值。执行命令如下:

      [Linux]$ cat *.img.sha256sum
      
      [Windows]> type *.img.sha256sum
      
    2. 计算文件的 sha256 校验值。执行命令如下:

      [Linux]$ *.img
      
      [Windows]> *.img SHA256
      
    3. 对比步骤 1 和步骤 2 计算的校验值是否一致。

      如果校验值一致说明下载的文件完整性没有破坏,如果校验值不一致则可以确认文件完整性已被破坏,需要重新获取。

    image-20211019144837086

    2.烧写镜像文件

    image-20211019150048211

    安装成功,使用ssh登录

    image-20211027210524111

    3.安装openssl

    在安装开发工具的时候应该一起安装好了

    image-20211027210852866

    测试

    image-20211028104145674

    openssl编程

    测试代码

    #include <stdio.h>
    #include <openssl/evp.h>
    
    int main(){
    	
        OpenSSL_add_all_algorithms();
    	
        return 0;
    }
    
    
    

    编译时出现错误:

    image-20211028104534031

    原因:你尝试编译的程序使用OpenSSL,但是需要和OpenSSL链接的文件(库和头文件)在你Linux平台上缺少。

    解决方法:安装OpenSSL开发包

    sudo dnf install openssl-devel
    

    再次尝试编译,成功。

    image-20211028105056414

    base64算法

    测试代码:

    #include <stdio.h>
    #include <string.h>
    #include <openssl/evp.h>
    #include <openssl/x509.h>
    
    //Base64编码
    void tEVP_Encode()
    {
    	EVP_ENCODE_CTX *ctx;
            ctx = EVP_ENCODE_CTX_new();	//EVP编码结构体
    	unsigned char in[1024];			//输入数据缓冲区
    	int inl;						//输入数据长度
    	char out[2048]={0};				//输出数据缓冲区
    	int outl;						//输出数据长度
    	FILE *infp;						//输入文件句柄
    	FILE *outfp;					//输出文件句柄
    
    	infp = fopen("test.dat","rb");//打开待编码的文件
    	if(infp == NULL)
    	{
    		printf("Open File "Test.dat"  for Read Err.
    ");
    		return;
    	}
    	
    	outfp = fopen("test.txt","w");//打开编码后保存的文件
    	if(outfp == NULL)
    	{
    		printf("Open File "test.txt" For Write Err.
    ");
    		return;
    	}
    	EVP_EncodeInit(ctx);//Base64编码初始化
    	printf("文件"Test.dat" Base64编码后为:
    ");
    	//循环读取原文,并调用EVP_EncodeUpdate计算Base64编码
    	while(1)
    	{
    		inl = fread(in,1,1024,infp);
    		if(inl <= 0)
    			break;
    		EVP_EncodeUpdate(ctx,out,&outl,in,inl);//编码
    		fwrite(out,1,outl,outfp);//输出编码结果到文件
    		printf("%s",out);
    	} 
    	EVP_EncodeFinal(ctx,out,&outl);//完成编码,输出最后的数据。
    	fwrite(out,1,outl,outfp);
    	printf("%s",out);
    	fclose(infp);
    	fclose(outfp);	
    	printf("对文件"Test.dat" Base64编码完成,保存到"test.txt"文件.
    
    
    ");
    }
    
    //Base64解码
    void tEVP_Decode()
    {
    	EVP_ENCODE_CTX *ctx;
            ctx = EVP_ENCODE_CTX_new();			//EVP编码结构体
    	char in[1024];					//输入数据缓冲区
    	int inl;						//输入数据长度
    	unsigned char out[1024];		//输出数据缓冲区
    	int outl;						//输出数据长度
    	FILE *infp;						//输入文件句柄
    	FILE *outfp;					//输出文件句柄
    	
    	infp = fopen("test.txt","r");//打开待解码的文件
    	if(infp == NULL)
    	{
    		printf("Open File "Test.txt"  for Read Err.
    ");
    		return;
    	}
    	outfp = fopen("test-1.dat","wb");//打开解码后保存的文件
    	if(outfp == NULL)
    	{
    		printf("Open File "test-1.txt" For Write Err.
    ");
    		return;
    	}
    	EVP_DecodeInit(ctx);//Base64解码初始化
    	printf("开始对文件"Test.txt" Base64解码...
    
    ");
    	//循环读取原文,并调用EVP_DecodeUpdate进行Base64解码
    	while(1)
    	{
    		inl = fread(in,1,1024,infp);
    		if(inl <= 0)
    			break;
    		EVP_DecodeUpdate(ctx,out,&outl,in,inl);//Base64解码
    		fwrite(out,1,outl,outfp);//输出到文件
    	} 
    	EVP_DecodeFinal(ctx,out,&outl);//完成解码,输出最后的数据。
    	fwrite(out,1,outl,outfp);
    	fclose(infp);
    	fclose(outfp);	
    	printf("对文件"Test.txt" Base64解码完成,保存为"test-1.dat"
    
    
    ");
    	
    }
     
    int main()
    {
     
    	tEVP_Encode();
    	tEVP_Decode();
    	
    	return 0;
    }
    

    编译结果如下:编译不支持gbk,所以删除掉将源码编码成gbk即可

    image-20211028111338386

    通过echo命令写二进制文件,参考如下

    image-20211028151101753

    4.安装zsh

    参考以下博客,安装zsh

    5.实验指导书

    详情见

  • 相关阅读:
    HTML4如何让一个DIV居中对齐?float输入日志标题
    HTML3层叠样式表
    面向对象 学生考试计分题目
    C#总复习
    HTML2列表表单框架
    HTML1网页三部份内容
    HTML 5 JavaScript初步 编译运行.doc
    初识MYSQL
    数据库设计
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/sisterben/p/15475849.html
Copyright © 2011-2022 走看看