OTP (One Time Pad) 암호화로 C 프로그램을 만들려고합니다. 이 프로그램은 사용자가 암호화 할 문자열을 사용합니다. 그런 다음 키를 가져 오기 전에 (정수로) 키의 길이를 요청해야합니다. 프로그램이 100 % 정확하기를 원하기 때문에 키의 길이에 제약을 가하고 있습니다. 우리가 알고 있듯이, OTP에서 키의 길이는 텍스트의 길이를 초과 할 수 없습니다. 그렇다면 어떻게 그러한 필터를 구현할 수 있습니까? 코드 생성을 시도했지만 작동하지 않습니다. '렌'도 '렌'의 값에 문자열의 길이를 초과 할 수 없습니다 스캔하는 동안어떻게 문자를 입력하도록 사용자를 제한 할 수 있으며 C에서 지정된 길이보다 큰 정수를 사용할 수 있습니까?
//An Under-Construction program to implement OTP (One time Pad) encryption
#include "stdio.h"
#include "cstring"
#include "ctype.h"
int main()
{
char str[10000], key[10000];
printf("Enter the string:- ");
scanf("%[^\n]", str); //stops scanning when user presses return
int len /* stores the number of digits of the OTP key*/, isalphabet=0;
do
{
printf("What is the length of the key you are entering?:-");
scanf("%d", &len);
if(isalpha(len)) // Checks if len is a character
{
isalphabet=NULL; //isalphabet becomes NULL if it is a character and not an integer
}
} while (len > strlen(str) || isalphabet == NULL); //reiterate the loop until the conditions are satisfied
for(int i = 0; i < len; i++)
{
printf("%dth digit of Key= ", i+1);
scanf("%d", &key[i]);
}
return(0);
}
내가 원하는 사용자로부터 만 정수 값을 취할 수있는 프로그램 : 여기
코드입니다 이러한 조건이 충족되지 않으면 루프를 반복합니다. 누군가 내 실수를 지적하고 그 해결책을 보여줄 수 있습니까? 또한 코드가 왜 작동하지 않는지에 대한 이유를 설명해주십시오.
확실히 키가 텍스트보다 짧아야합니다. 그렇지 않으면 암호화를 해독 할 수있는 키를 반복해야합니다. –
@Arlene 특정 문제에 대해 설명해주십시오. –
@ NicholasWilson : 이상적으로는 암호를 100 % uncrackable로 만들려면 키가 텍스트만큼 길어야합니다. 모든 경우에서 이것이 가능하지 않기 때문에 키는 가능한 한 길어야하지만 NO CASE는 암호화 할 텍스트의 길이를 초과 할 수 있습니다. –