3、对输入的密码进行加密。 请从键盘输入一个8位密码。该密码可以包含空格键,但不能包含回车键。输入的密码必须包含大写字母、小写字母、数字和特殊符号。 加密规则为: 1)将数字全部挑选出来,将所有数字在原密码中所处位置(位置分别为1-8)和数字对应的ASCII码值组合成为一个新的字符串1(举例:输入密码SC1a2***,则新字符串为“349550”,3表示字符‘1’在密码中的位置为3,49表示字符‘1’的ASCII码值)。 2)将原密码中的字母和特殊符号取出,组成一个新的字符串,该字符串每个字符前需增加该字符在原密码中的位置信息。(举例:输入密码SC1a2***,则新字符串为“1S2C4a6*7*8*”)。将新字符串中的大写字母转换成小写字母,并循环后移3个位置。(如A转换为d,Z转换为c);将小写字母转换成大写字母,并循环前移5个位置,形成一个新的字符串2。 3)将转换后的两个字符串(1和2)进行连接(先是数字对应新的字符串1,然后字母特殊符号对应新的字符串2),形成加密后的密码。用c++编写

时间: 2023-05-28 08:05:29 浏览: 110
#include <stdio.h> #include <string.h> #include <ctype.h> int main() { char password[9]; // 存储输入密码的数组,最多8位 char num_str[9]; // 存储数字对应的字符串 char char_str[17]; // 存储字母和特殊符号对应的字符串 char encrypt[26]; // 存储加密后的密码 printf("请输入一个8位密码(不能包含回车键):"); scanf("%8s", password); // 读取最多8个字符,不包括空字符 int num_count = 0; // 记录数字个数 int char_count = 0; // 记录字母和特殊符号个数 // 遍历密码,提取数字和字母特殊符号,并记录它们的位置信息 for (int i = 0; i < strlen(password); i++) { if (isdigit(password[i])) { num_str[num_count++] = i + '0'; // 将数字位置转换成字符 num_str[num_count++] = password[i]; // 将数字加入字符串 } else if (isalpha(password[i]) || ispunct(password[i])) { char_str[char_count++] = i + '0'; // 将字符位置转换成字符 char_str[char_count++] = password[i]; // 将字符加入字符串 } } // 对字符字符串进行大小写转换和循环移位操作 for (int i = 0; i < char_count; i++) { if (isupper(char_str[i])) { char_str[i] = tolower(char_str[i]); // 转换成小写字母 char_str[i] = (char_str[i] - 'a' + 3) % 26 + 'a'; // 右移3位,循环移位 } else if (islower(char_str[i])) { char_str[i] = toupper(char_str[i]); // 转换成大写字母 char_str[i] = (char_str[i] - 'A' + 21) % 26 + 'A'; // 左移5位,循环移位 } } // 将数字字符串和字符字符串连接成加密后的密码 strncpy(encrypt, num_str, num_count); strncat(encrypt, char_str, char_count); printf("加密后的密码为:%s\n", encrypt); return 0; }

相关推荐

最新推荐

recommend-type

vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)

主要介绍了vue项目中使用AES实现密码加密解密的方法,主要是通过ecb和cbc两种模式,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Spring Boot 中密码加密的两种方法

主要介绍了Spring Boot 中密码加密的两种方法,帮助大家更好的理解和使用Spring Boot框架,感兴趣的朋友可以了解下
recommend-type

Django中密码的加密、验密、解密操作

主要介绍了Django中密码的加密、验密、解密操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

SpringBoot+Shiro学习之密码加密和登录失败次数限制示例

本篇文章主要介绍了SpringBoot+Shiro学习之密码加密和登录失败次数限制示例,可以限制登陆次数,有兴趣的同学可以了解一下。
recommend-type

java加密MD5实现及密码验证代码实例

主要介绍了java加密MD5实现及密码验证代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

Redis验证与连接:快速连接Redis服务器指南

![Redis验证与连接:快速连接Redis服务器指南](https://img-blog.csdnimg.cn/20200905155530592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTg5NTEw,size_16,color_FFFFFF,t_70) # 1. Redis验证与连接概述 Redis是一个开源的、内存中的数据结构存储系统,它使用键值对来存储数据。为了确保数据的安全和完整性,Redis提供了多
recommend-type

gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app 报错 ModuleNotFoundError: No module named 'geventwebsocket' ]

这个报错是因为在你的环境中没有安装 `geventwebsocket` 模块,可以使用下面的命令来安装: ``` pip install gevent-websocket ``` 安装完成后再次运行 `gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app` 就不会出现这个报错了。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。