Ich versuche, Vigenere Cipher in C. https://www.youtube.com/watch?v=9zASwVoshiM das ist info über Vigenere Cipher. Mein Code arbeitet nicht für bestimmte Fälle wie verschlüsselt "Welt, sagen Hallo!" als "xoqmd, rby gflkp!" Verwenden Sie stattdessen "baz" als Schlüsselwort und verschlüsseln es als xomd, szz fl. Ein anderes Beispiel ist: verschlüsselt "BaRFoo" als "CaQGon" mit "BaZ" als Schlüsselwort, verschlüsselt es aber stattdessen als CakGo. Mein Code ist unten bitte helfen Sie mir heraus gegeben:Vigenere Cipher
#include<stdio.h>
#include<cs50.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, string argv[]) {
//string plaintext;
string key;
if (argc != 2) {
printf("Please run the programme again this time using a command line argument!\n");
return 1;
}
key = argv[1];
int keys[strlen(key)];
for (int m = 0; m< strlen(key); m++) {
if (isalpha(key[m]) == false) {
printf("Re-Run The programme without any symbols.\n");
return 1;
}
}
for (int b = 0; b < strlen(key); b++) {
if (isupper(key[b]) == false) {
keys[b] = key[b] - 'a';
}
else {
keys[b] = key[b] - 'A';
}
}
//printf("Enter a string which should be encrypted: \n");
string plaintext = GetString();
int plength = strlen(plaintext);
int klength = strlen(key);
string ciphertext = key;
for (int u = 0; u<plength; u++) {
if (isalpha(plaintext[u]) == false) {
printf("%c", plaintext[u]);
continue;
}
int value = u % klength;
ciphertext[u] = (keys[value] + plaintext[u]);
if ((islower(plaintext[u])) && (ciphertext[u])>'z') {
ciphertext[u] = ciphertext[u] - 'z' + 'a' - 1;
}
if ((isupper(plaintext[u])) && (ciphertext[u])>'z') {
ciphertext[u] = ciphertext[u] - 'Z' + 'A' - 1;
}
printf("%c", ciphertext[u]);
}
printf("\n");
return 0;
}
1) 'Zeichenfolge ciphertext = key;' -> 'unsigned char * ciphertext = malloc (PLength);' (Später mache 'frei (ciphertext); ') 2)' if ((isupper (Klartext [u])) && (Chiffretext [u])>' z ') {'->' if (isupper (Klartext [u]) && ciphertext [u]> 'Z') {' – BLUEPIXY
Einrückung ist dein Freund. –