暗号学
シーザーのパスワード
「シーザーパスワード」とも呼ばれています

暗号化時に送信するメッセージをn回押して暗号化します.
復号は非常に簡単です
ex) I love cookie.
key値暗号文3



復号コード
#include <stdio.h>
#include <string.h>
int main()
{
char message[10000] = { 0, };
char ch;
int i, key;
printf("Caesar Cipher Decryption\n");
printf("\n");
printf("Ciphertext: KYVXIVRKVJKXCFIPZECZMZEXCZVJEFKZEEVMVIWRCCZEXSLKZEIZJZEXVMVIPKZDVNVWRCC.EVCJFEDREUVCR.KYVNRPKFXVKJKRIKVUZJKFHLZKKRCBZEXREUSVXZEUFZEX.NRCKUZJEVP.PFLIKZDVZJCZDZKVUJFUFEFKNRJKVZKCZMZEXJFDVFEVVCJVJCZWV.UFEFKSVKIRGGVUSPUFXDR.NYZTYZJCZMZEXNZKYKYVIVJLCKJFWFKYVIGVFGCVJKYZEBZEX.JKVMVAFSJ.ZWCZWVNVIVGIVUZTKRSCVZKNFLCUTVRJVKFSVCZWVREUSVNZKYFLKWCRMFI.VCVREFIIFFJVMVCK.ZWPFLCFFBRKNYRKPFLYRMVZECZWVPFLNZCCRCNRPJYRMVDFIV.ZWPFLCFFBRKNYRKPFLUFEFKYRMVZECZWVPFLNZCCCEVMVIYRMVVEFLXY.FGIRYNZEWIVP.ZWPFLJVKPFLIXFRCJIZUZTLCFLJCPYZXYREUZKZJRWRZCLIVPFLNZCCWRZCRSFMVVMVIPFEVVCJVJJLTTVJJ.ARDVJTRDVIFE.CZWVZJNYRKYRGGVEJNYVEPFLRIVSLJPDRBZEXFKYVIGCREJ.AFYECVEEFE.JGIVRUCFMVVMVIPNYVIVPFLXF.CVKEFFEVVMVITFDVKFPFLNZKYFLKCVRMZEXYRGGZVI.DFKYVIKVIVJR.NYVEPFLIVRTYKYVVEUFWPFLIIFGVKZVRBEFKZEZKREUYREXFE.WIREBCZEU.IFFJVMVCK.RCNRPJIVDVDSVIKYRKPFLRIVRSJFCLKVCPLEZHLV.ALJKCZBVVMVIPFEVVCJV.DRIXRIVKDVRU.UFEFKALUXVVRTYURPSPKYVYRIMVJKPFLIVRGSLKSPKYVJVVUJKYRKPFLGCREK.IFSVIKCFLZJJKVMVEJFE.KYVWLKLIVSVCFEXJKFKYFJVNYFSVCZVMVZEKYVSVRLKPFWKYVZIUIVRDJ.VCVREFIIFFJVMVCK.KVCCDVREUZWFIXVK.KVRTYDVREUZIVDVDSVI.ZEMFCMVDVREUZCVRIE.SVEARDZEWIREBCZE.KYVSVJKREUDFJKSVRLKZWLCKYZEXJZEKYVNFICUTREEFKSVJVVEFIVMVEKFLTYVUKYVPDLJKSVWVCKNZKYKYVYVRIK.YVCVEBVCCVI.ZKZJULIZEXFLIURIBVJKDFDVEKJKYRKNVDLJKWFTLJKFJVVKYVCZXYK.RIZJKFKCV.NYFVMVIZJYRGGPNZCCDRBVFKYVIJYRGGPKFF.REEVWIREB.UFEFKXFNYVIVKYVGRKYDRPCVRUXFZEJKVRUNYVIVKYVIVZJEFGRKYREUCVRMVRKIRZC.IRCGYNRCUFVDVIJFE\n");
printf("\n");
printf("Key: 17\n");
printf("\n");
strcpy_s(message, 10000, "KYVXIVRKVJKXCFIPZECZMZEXCZVJEFKZEEVMVIWRCCZEXSLKZEIZJZEXVMVIPKZDVNVWRCC.EVCJFEDREUVCR.KYVNRPKFXVKJKRIKVUZJKFHLZKKRCBZEXREUSVXZEUFZEX.NRCKUZJEVP.PFLIKZDVZJCZDZKVUJFUFEFKNRJKVZKCZMZEXJFDVFEVVCJVJCZWV.UFEFKSVKIRGGVUSPUFXDR.NYZTYZJCZMZEXNZKYKYVIVJLCKJFWFKYVIGVFGCVJKYZEBZEX.JKVMVAFSJ.ZWCZWVNVIVGIVUZTKRSCVZKNFLCUTVRJVKFSVCZWVREUSVNZKYFLKWCRMFI.VCVREFIIFFJVMVCK.ZWPFLCFFBRKNYRKPFLYRMVZECZWVPFLNZCCRCNRPJYRMVDFIV.ZWPFLCFFBRKNYRKPFLUFEFKYRMVZECZWVPFLNZCCCEVMVIYRMVVEFLXY.FGIRYNZEWIVP.ZWPFLJVKPFLIXFRCJIZUZTLCFLJCPYZXYREUZKZJRWRZCLIVPFLNZCCWRZCRSFMVVMVIPFEVVCJVJJLTTVJJ.ARDVJTRDVIFE.CZWVZJNYRKYRGGVEJNYVEPFLRIVSLJPDRBZEXFKYVIGCREJ.AFYECVEEFE.JGIVRUCFMVVMVIPNYVIVPFLXF.CVKEFFEVVMVITFDVKFPFLNZKYFLKCVRMZEXYRGGZVI.DFKYVIKVIVJR.NYVEPFLIVRTYKYVVEUFWPFLIIFGVKZVRBEFKZEZKREUYREXFE.WIREBCZEU.IFFJVMVCK.RCNRPJIVDVDSVIKYRKPFLRIVRSJFCLKVCPLEZHLV.ALJKCZBVVMVIPFEVVCJV.DRIXRIVKDVRU.UFEFKALUXVVRTYURPSPKYVYRIMVJKPFLIVRGSLKSPKYVJVVUJKYRKPFLGCREK.IFSVIKCFLZJJKVMVEJFE.KYVWLKLIVSVCFEXJKFKYFJVNYFSVCZVMVZEKYVSVRLKPFWKYVZIUIVRDJ.VCVREFIIFFJVMVCK.KVCCDVREUZWFIXVK.KVRTYDVREUZIVDVDSVI.ZEMFCMVDVREUZCVRIE.SVEARDZEWIREBCZE.KYVSVJKREUDFJKSVRLKZWLCKYZEXJZEKYVNFICUTREEFKSVJVVEFIVMVEKFLTYVUKYVPDLJKSVWVCKNZKYKYVYVRIK.YVCVEBVCCVI.ZKZJULIZEXFLIURIBVJKDFDVEKJKYRKNVDLJKWFTLJKFJVVKYVCZXYK.RIZJKFKCV.NYFVMVIZJYRGGPNZCCDRBVFKYVIJYRGGPKFF.REEVWIREB.UFEFKXFNYVIVKYVGRKYDRPCVRUXFZEJKVRUNYVIVKYVIVZJEFGRKYREUCVRMVRKIRZC.IRCGYNRCUFVDVIJFE.");
key = 17;
for (i = 0; message[i] != '\0'; ++i) {
ch = message[i];
if (ch >= 'a' && ch <= 'z') {
ch = ch - key;
if (ch < 'a') {
ch = ch + 'z' - 'a' + 1;
}
message[i] = ch;
}
else if (ch >= 'A' && ch <= 'Z') {
ch = ch - key;
if (ch < 'A') {
ch = ch + 'Z' - 'A' + 1;
}
message[i] = ch;
}
else if (ch == '.') {
message[i] = ch;
}
}
printf("plaintext: %s\n", message);
return 0;
}
ビズネルパスワード
キーワードを使用するパスワードで、複数の単文字置換パスワードの1つです.
<メリット>

ex)
ジョンウィック
Key値:sky

パスワード:byffgguu
復号コード
#include <stdio.h>
#include <string.h>
int main()
{
char message[10000] = { 0, };
char key[10] = { 0, };
char msg_char, key_char;
int i, msg_len, key_len;
printf("Vigenere Cipher Decryption\n");
printf("\n");
printf("Ciphertext: SQRQEDCUENMSUENMSUENMSUENMSZLIDHYIFVCFVCKIJITROKWMIDCENCDCENCDCENCDCENCWDAEKFZRGKZCQYPOMSRSHVFRKBUWBBOEHSLFRRDCPIENNGXMVOAVWOWSJTAMSWSRLCKLMIVRRDCVRRDCVRRDCVRRDCMVEHISRLCKIJIIDUFISYBRRDYBRRDYBRRDSHXSECCEENNCEENNCECEKVZXHBCNQYROEHSEDZRTRSRMRCCDITSAVWSKMZRGKMVSHQCKXAVSKKOSKRRNKQVPELFRXEKBUPIFSDCLSTVWAIWEKAICYFALMCITCUFGAEGVAEQCEVOMYKLICQCYBGSXSNQCRPLXWXLTGSXSNVWXLTSHLTLSYVMTCRPRAWWKICKIJIIDCCHYYIFRCOBFAIDCCHYYIKAIMSNIGYBCMGRHZXUZZZOESHJHYXODMTOWTEMOHFQOFSDSVOAFZEWCMIGOHFYTDVVAAICWQEKBUQYMFVACBSNGROKTVEGWDMNDVVGLEPJSIWUFRNKRFHONCUSJEGKAHKHKLEPITOCKAVLEBSKSDYRFHONCPIARMVEHMOLWESHXSECCEENNCEENNCEENNWKKOOGFRAXRFRAXRFRYOOYMTRFFAMIVRRDCIGMNDVVEIBGFQEDWDISCOPMNQOPSHQCKXAVSKKOSKRRNKQVPELFRXEKBUPIFSDCLSTVWAIWEKAICYFALMCITCUFGAEGVAEQCEVOMYKLICQCYBGSXSNQCRPLXWXLTGSXSNVWXLTSHLTLSYVMTCRPRAWWKICKIJIIDCCHYYIFRCOBFAIDCCHYYIKAIMSNIGYBCMGRHZXUZZZOESHJHYXODMTOWDKOXBRXAUSZXAVZZMMQCERALSKLEVOJXOXSJXAXRZRGRWXLEBCMIRKZCMIWUFRNKPVXHOZRWTYBVPAXRZRGMOLWESWZFEVWVZESHRRDSWZMJEGKAAXHZXAVZZNUCHNENDWKELVWDKOXBRTUDAPLAXRJMNDVVEIBVRRDCWEXHOOZVPEHPSUBVRRDCWEXHOOZVIDVISWWMYENNGLTIXHYIASFJSMOHZQECGRCIXURCORUFXTKZVXGYWNENXOTILOPIETOOEHLSJVQYVWWISKMZRGKMFLBKPPPEDGXSCKIJIWOUFRRYQBXHSGTPULKVKOXUFELVBZKHDKVKOXZZKHDWKYPVWBIIDGUCNKAZXEMOLWESHFPDICLSNMSESWSHFPDICLXWSQVAEQCEPIQVKMTEDCMKOWKWDIBRQIDS\n");
printf("\n");
printf("Key: korea\n");
printf("\n");
strcpy_s(message, 10000, "SQRQEDCUENMSUENMSUENMSUENMSZLIDHYIFVCFVCKIJITROKWMIDCENCDCENCDCENCDCENCWDAEKFZRGKZCQYPOMSRSHVFRKBUWBBOEHSLFRRDCPIENNGXMVOAVWOWSJTAMSWSRLCKLMIVRRDCVRRDCVRRDCVRRDCMVEHISRLCKIJIIDUFISYBRRDYBRRDYBRRDSHXSECCEENNCEENNCECEKVZXHBCNQYROEHSEDZRTRSRMRCCDITSAVWSKMZRGKMVSHQCKXAVSKKOSKRRNKQVPELFRXEKBUPIFSDCLSTVWAIWEKAICYFALMCITCUFGAEGVAEQCEVOMYKLICQCYBGSXSNQCRPLXWXLTGSXSNVWXLTSHLTLSYVMTCRPRAWWKICKIJIIDCCHYYIFRCOBFAIDCCHYYIKAIMSNIGYBCMGRHZXUZZZOESHJHYXODMTOWTEMOHFQOFSDSVOAFZEWCMIGOHFYTDVVAAICWQEKBUQYMFVACBSNGROKTVEGWDMNDVVGLEPJSIWUFRNKRFHONCUSJEGKAHKHKLEPITOCKAVLEBSKSDYRFHONCPIARMVEHMOLWESHXSECCEENNCEENNCEENNWKKOOGFRAXRFRAXRFRYOOYMTRFFAMIVRRDCIGMNDVVEIBGFQEDWDISCOPMNQOPSHQCKXAVSKKOSKRRNKQVPELFRXEKBUPIFSDCLSTVWAIWEKAICYFALMCITCUFGAEGVAEQCEVOMYKLICQCYBGSXSNQCRPLXWXLTGSXSNVWXLTSHLTLSYVMTCRPRAWWKICKIJIIDCCHYYIFRCOBFAIDCCHYYIKAIMSNIGYBCMGRHZXUZZZOESHJHYXODMTOWDKOXBRXAUSZXAVZZMMQCERALSKLEVOJXOXSJXAXRZRGRWXLEBCMIRKZCMIWUFRNKPVXHOZRWTYBVPAXRZRGMOLWESWZFEVWVZESHRRDSWZMJEGKAAXHZXAVZZNUCHNENDWKELVWDKOXBRTUDAPLAXRJMNDVVEIBVRRDCWEXHOOZVPEHPSUBVRRDCWEXHOOZVIDVISWWMYENNGLTIXHYIASFJSMOHZQECGRCIXURCORUFXTKZVXGYWNENXOTILOPIETOOEHLSJVQYVWWISKMZRGKMFLBKPPPEDGXSCKIJIWOUFRRYQBXHSGTPULKVKOXUFELVBZKHDKVKOXZZKHDWKYPVWBIIDGUCNKAZXEMOLWESHFPDICLSNMSESWSHFPDICLXWSQVAEQCEPIQVKMTEDCMKOWKWDIBRQIDS");
strcpy_s(key, 10, "korea");
msg_len = strlen(message);
key_len = strlen(key);
for (i = 0; i < msg_len; i++)
{
if (message[i] >= 'A' && message[i] <= 'Z')
msg_char = 'A';
else if (message[i] >= 'a' && message[i] <= 'z')
msg_char = 'a';
if (key[i % key_len] >= 'A' && key[i % key_len] <= 'Z')
key_char = 'A';
else if (key[i % key_len] >= 'a' && key[i % key_len] <= 'z')
key_char = 'a';
message[i] = ((message[i] - msg_char - key[i % key_len] + key_char + 26) % 26) + msg_char;
}
printf("plaintext: %s\n", message);
return 0;
}
Reference
この問題について(暗号学), 我々は、より多くの情報をここで見つけました https://velog.io/@rlagksql219/암호학テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol