gpt4 book ai didi

c - 使用凯撒密码的 C 加密

转载 作者:行者123 更新时间:2023-11-30 14:33:31 28 4
gpt4 key购买 nike

我被要求创建一个程序,我必须使用凯撒密码来加密多条信息。我理解其背后的概念,但我在视觉上遇到的问题是如何在函数中输入数据。例如,我已将加密密码保存在文件中(“hrkk1”表示“pass1”等)。我必须创建一个密码函数来读取 scanf 和 strcmp 中的输入,以便它与允许用户登录的文件中的内容相匹配。

验证用户输入并使“pass1”变成“hrkk1”以便它与文件中的内容匹配并允许用户登录的最佳方法是什么?

谢谢

这是我到目前为止的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <windows.h>

void checkValid(void);
void loginDetails(char username[5][6], char password[5][9]);
void encryption(char username[5][6], char password[5][9]);

int main(void)
{
FILE *EP;
FILE *UN;
char username[5][6];
char password [5][9], ch, key;
EP = fopen("encrypted_passwords.txt", "r");
fscanf(EP, "%s %s %s %s %s", password[0], password[1],
password[2], password[3], password[4]);
fclose(EP);
UN = fopen("username.txt", "r");
fscanf(UN, "%s %s %s %s %s", username[0], username[1], username[2],
username[3], username[4]);
fclose(UN);

printf("Welcome.");
loginDetails(username, password);

return 0;
}

void loginDetails(char username[5][6], char password[5][9])
{
int i;
char nurseUsername[6];
char nursePassword[6];
bool useValid = 0;
bool passValid = 0;

printf("Please Enter your username: \n");
scanf("%s", nurseUsername);
for (i = 0; i < 5; i++)
{
if(strcmp(nurseUsername, username[i]) == 0)
{
useValid = 1;
}
}
if(useValid != 1)
{
printf("\nError. Invalid Username. Returning to menu.\n");
Sleep(1000);
system("cls");
main();
}
else
{
printf("\nPlease enter your password: \n");
scanf("%s", nursePassword);
}
for(i = 0; i < 5; i++)
{
if((strcmp(nurseUsername, username[i]) == 0) &&
(strcmp(nursePassword, password[i]) == 0))
{
passValid = 1;
}
if(passValid != 1)
{
printf ("Error. Invalid Password. Returning to menu.\n");
Sleep(1000);
system("cls");
main();
}
else
{
printf("\nLogin Successful. Loading menu.\n");
Sleep(1000);
system("cls");
patientEntry();
}
}

}

最佳答案

你需要在c中使用字符的移位。这可以通过对 char 值进行简单的加法(或减法)来实现。

请注意,您的示例不会移动数字字符,并且该字符也可能不会超出字母表,并且它还考虑了大写字母。所以加法时要注意不要超出大写或非大写字母的范围。我的建议是使用ascii表。

关于c - 使用凯撒密码的 C 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253431/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com