找回密码
  注册[Register]
查看: 244|回复: 8

[vc] C语言英文加密解密

[复制链接]
发表于 2023-4-2 07:33 来自手机 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

本帖最后由 48910155 于 2023-4-2 07:34 编辑

[C] 纯文本查看 复制代码
#include <stdio.h>
void test7();
int main(){
        test7();
        return 0;
        }
void test7() {
    printf("\n==================================测试7==================================\n");
    do {
        char str[200], str1[200], str2[200];//定义三个字符串
        unsigned int pass = 0;//定义密码
        printf("\n请输入一段明文:");
        scanf("%[^\n]", &str);//输入回车结束
        getchar();//消除回车缓存
        printf("你输入的明文是:");
        //'\0'字符串结束符
        for (int i = 0; str[i] != '\0';) { //历遍检查所有字符
            printf("%c", str[i++]);//打印字符
        }
        printf("\n请输入密码(一个英文字母):");
        scanf("%d", &pass);//输入密码
        if (pass > 27)pass %= 27;//密码求余0-26
        printf("正在加密#########\n");
        for (int i = 0; str[i] != '\0'; i++) {//判读字符串是否结束str[i] != '\0';
            if (i % 3 == 0) {//i求余 三次密码+1
                pass++;
                if (pass > 27)pass %= 27;//密码大于27求余
            }
            if (str[i] >= 'A' && str[i] <= 'z') {//判断是否为英文字符范围
                if (str[i] - pass >= 'A')str1[i] = str[i] - pass;//如果字符-密码 加密字符=大于字符A则字符减密码
                else str1[i] = 'z' - ('A' - (str[i] - pass));//否则 加密字符=最大字符z减字符减密码的倒序字符
            } else str1[i] = str[i];//判断不为英文字母范围 加密字符=明文字符
            //printf("%c对应%c\n",str[i],str1[i]);
            str1[i + 1] = '\0';//最后给加密字符结束符号
        }
 
        printf("密文是:%s\n", str1);//最后打印出加密字符串
        printf("\n请输入密码(一个英文字母):");
        scanf("%d", &pass);//输入密码
        if (pass > 27)pass %= 27;//密码求余 0-26
        printf("正在解密#########\n");
        for (int i = 0; str1[i] != '\0'; i++) {//判读字符串是否结束str[i] != '\0';
            if (i % 3 == 0) {//三次密码+1
                pass++;
                if (pass > 27)pass %= 27;//求余
            }
            if (str1[i] >= 'A' && str1[i] <= 'z') {//密文范围
                if (str1[i] + pass <= 'z')str2[i] = str1[i] + pass;//判断字符加密码是否大于;z
                else str2[i] = ((str1[i] + pass) - 'z') + 'A';//不在该范围
            } else str2[i] = str1[i];//其余字符不变
            str2[i + 1] = '\0';
            // printf("%c对应%c\n",str1[i],str2[i]);
        }
        printf("\n明文是:%s\n", str);
        printf("密文是:%s\n", str1);
        printf("解密是:%s\n", str2);
        printf("\n输入任意键退出回车继续:");
    } while (getchar() == '\n');
}


FB56CC27-FC92-4D0D-BC80-A48EED0D47E2.png
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2023-4-2 07:34 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-2 08:06 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-2 08:58 | 显示全部楼层
多谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-2 08:58 | 显示全部楼层
先收藏了,万一用到呢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-2 08:58 | 显示全部楼层
6666666666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-2 10:12 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-2 11:25 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2023-4-3 08:03 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-4-29 16:50 , Processed in 0.045418 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表