0
HZVIG.cpp :Vigenere 암호 C++
#include "HZVIG.h"
char ROTEncode(char inchar, int rot)
{
if (IsBigLetter(inchar))
return ((int)inchar - (int)'A' + rot) % 26 + 'A' - 1;
else if (IsSmallLetter(inchar))
return ((int)inchar - (int)'a' + rot) % 26 + 'a' - 1;
else
return inchar;
}
char ROTDecode(char inchar, int rot)
{
if (IsBigLetter(inchar))
return ((int)inchar - (int)'A' - rot + 26) % 26 + 'A' - 1;
else if (IsSmallLetter(inchar))
return ((int)inchar - (int)'a' + rot + 26) % 26 + 'a' - 1;
else
return inchar;
}
std::string VIGDecode(std::string instring, std::string key)
{
std::string result;
for (int i = 0; i < instring.length(); i++)
result += ROTDecode(instring[i], key[i % key.length()] - 'A' + 1);
return result;
}
std::string VIGEncode(std::string instring, std::string key)
{
std::string result;
for (int i = 0; i < instring.length(); i++)
result += ROTEncode(instring[i], key[i % key.length()] - 'A' + 1);
return result;
}
HZVIG.h : 그것은해야
C:\Users\adm1n\Desktop\C\HZToolkit>HZToolkit --evig --key ALPHA HZU18{CLASSICAL_CIPHER}
HKJ18{NAHSSTRHL_NXWHEC}
:이 코드는 작동하지만 잘못된 출력이
#include <string>
#define IsBigLetter(a) a >= 'A' && a <= 'Z'
#define IsSmallLetter(a) a >= 'a' && a <= 'z'
std::string VIGDecode(std::string instring, std::string key);
std::string VIGEncode(std::string instring, std::string key);
HKJ18 { JLADHPCAW_RPPHPG} 입력이 괜찮다고 생각합니다. 기능이 잘못되었습니다. C : \ Users \ adm1n \ Desktop \ C \ HZToolkit> HZToolkit --evig --key 알파 알파 출력 : AWEOA
감사합니다. 나는 틀린 것을 이해했다 : 함수는 비 알파벳 기호를 무시해야한다. –