基于字符设备对字符串进行加密解密

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

字符设备驱动

任务

编写利用字符设备实现对字符串加密解密的程序。
  加密:将大小写字母循环加4
  解密:将大小写字母循环减4
  例如:"China!“加密成"Glmre!”

驱动代码

//这是驱动代码,实现一个主设备号,两个次设备。一个次设备号加密,一个次设备号解密。
//相应的测试程序是 test1.c

#include<linux/module.h>
#include<linux/types.h>
#include<linux/kdev_t.h>
#include<linux/fs.h>
#include<linux/cdev.h>
#include<asm/uaccess.h>
#define OFFSET 4	
#define Major 200
#define SIZE 256
MODULE_LICENSE("GPL");

dev_t mydev;//存放申请的主次设备号
struct cdev mycdev[2]; //用于描述设备信息的结构体
char str[SIZE]={
   
   0}; //用于存放从用户态传送到内存态的数据
ssize_t my_write1(struct file* pfile,const char __user * buff, size_t num, loff_t *f_p)
{
   
   	
	int n=0;
	printk(KERN_INFO"Write1 now\n");
	if(num>SIZE)		//若是num大小超出存储的数组大小
		return -ENOMEM;

	if(copy_from_user(str,buff,num))	//若是还有从用户态未读完的数据
		return -EFAULT;
//	copy_from_user(str,buff,num);

#if 1
	while(str[n] != 0)	//字符加密,即字母往后循环移动 OFFSET 位数
	{
   
   
		if( ('a'<=str[n]&&str[n]<='z') || ('A'<=str[n]&&str[n]<='Z') )
		{
   
   
			if( ('a'<=str[n]&&str[n]<=('z'-OFFSET)) || ('A'<=str[n]&&str[n]<=('Z'-OFFSET)) )
				str[n] +

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值