🗂

C++ シーザー暗号解いてみる(失敗)

2021/10/23に公開

こういう入力を

EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT.

各文字をN文字ずらして、シーザー暗号解読的なことをしてみる

こういうコードを書いたのだが

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<string> s(1000); //要素数は適当。cinの終端を拾って~が面倒だったので
    for (int i = 0; i < 1000; i++){
        cin >> s[i];
    }
    
    for (int k = 0; k < 26; k++){ //アルファベットは26文字なので、26回1文字ずつずらす
        for (int i = 0; i < s.size(); i++){
            for (int j = 0; j < s[i].size(); j++){
                char c = s[i][j];
                s[i][j] = c + k+1; //ここで1文字ずらして格納してる
            }
            cout << s[i] << " ";
        }
        cout << endl;
    }
}
出力

FCH LWWW wg o gw{dzs zshhsf gipghwhihwcb qwdvsf hvoh fsdzoqsg o zshhsf kwhv hvs zshhsf LWWW zshhsfg othsf wh wb hvs ozdvopsh/ FCH LWWW wg ob slo{dzs ct hvs Qosgof qwdvsf- rsjszcdsr wb obqwsbh Fc{s/ Tzou wg TZOUGknulPXGO[ekllOI/ Wbgsfh ob ibrsfgqcfs w{{srwohszm othsf TZOU/
HEJ NYYY yi q iy}f|u |ujjuh ikrijyjkjyed syfxuh jxqj huf|qsui q |ujjuh myjx jxu |ujjuh NYYY |ujjuhi qvjuh yj yd jxu q|fxqruj1 HEJ NYYY yi qd unq}f|u ev jxu Squiqh syfxuh/ tulu|efut yd qdsyudj He}u1 V|qw yi V\QWImpwnRZIQ]gmnnQK1 Ydiuhj qd kdtuhisehu y}}utyqju|o qvjuh V\QW1
KHM Q\\ |l t l|�ix xmmxk lnulm|mnm|hg v|i{xk m{tm kxitvxl t xmmxk p|m{ m{x xmmxk Q\\ xmmxkl tymxk |m |g m{x ti{tuxm4 KHM Q\\ |l tg xqt�ix hy m{x Vtxltk v|i{xk2 wxoxhixw |g tgv|xgm Kh�x4 Ytz |l Y_TZLpszqU]LTjpqqTN4 \glxkm tg ngwxklvhkx |��xw|tmxr tymxk Y_TZ4 OLQ U``` �p x p��m�| �|qq|o prypq�qrq�lk z�m|o qxq o|m�xz|p x �|qq|o t�q q| �|qq|o U``` �|qq|op x}q|o �q �k q| x�mxy|q8 OLQ U``` �p xk |ux�m�| l} q| Zx|pxo z�m|o6 {|s|�lm|{ �k xkz�|kq Ol�|8 ]�x~ �p ]cX^Ptw~uYaPXdntuuXR8 kp|oq xk rk{|opzlo| ���|{�xq|�v x}q|o ]cX^8
TQV Zeee �u } u��r�� ��vv�t uw~uv�vwv�qp �r��t v�}v t�r�}�u } ��vv�t y�v� v�� ��vv�t Zeee ��vv�tu }�v�t �v �p v�� }�r�}~�v= TQV Zeee �u }p �z}�r�� q� v�� }�u}t �r��t; ��x��qr�� �p }p��pv Tq��= b�}� �u bh]cUy|�z^fU]isyzz]W= epu�tv }p wp��tuqt� ������}v��{ }�v�t bh]c=
ZW\ kkk �{ � {��x�� ��||�z {}�{|�|}|�wv ��x��z |��| z�x����{ � ��||�z �|� |�� ��||�z kkk ��||�z{ ��|�z �| �v |�� ��x����|C ZW\ kkk �{ �v ����x�� w� |�� e��{�z ��x��zA ��~��wx�� �v �v���v| Zw��C h��� �{ hnci[���dl[coy��c]C kv{�z| �v }v��z{�wz� �������|��� ��|�z hnciC a^c grrr �� � ����� ������ ����������~} ����� ���� ������� � ������ ���� ��� ������ grrr ������� ����� �� �} ��� �������J a^c grrr �� �} ������ ~� ��� l����� �����H �����~�� �} �}���}� a~��J o��� �� oujpb����ksbjv����jdJ r}���� �} �}�����~�� ����������� ����� oujpJ ifk ozzz �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ozzz ������� ����� �� �� ��� ��������R ifk ozzz �� �� ������� �� ��� t����� ������P ��������� �� ������� i���R w��� �� w}rxj����s{jr~����rlR z����� �� ���������� ����������� ����� w}rxR rot x��� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ x��� ������� ����� �� �� ��� ��������[ rot x��� �� �� ������� �� ��� }����� ������Y ��������� �� ������� r���[ ���� �� ��{�s����|�s{�����{u[ ������ �� ���������� ����������� ����� ��{�[ |y~ ���� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ���� ������� ����� �� �� ��� ��������e |y~ ���� �� �� ������� �� ��� ������ ������c ��������� �� ������� |���e ���� �� ����}������}�������e ������ �� ���������� ����������� ����� ����e ��� ���� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ���� ������� ����� �� �� ��� ��������p ��� ���� �� �� ������� �� ��� ������ ������n ��������� �� ������� ����p ���� �� ��������������������p ������ �� ���������� ����������� ����� ����p ��� ���� Ĵ � ��ȱ�� ������ �����ĵ��İ� �ı��� �ü� ���Ǽ��� � ������ �ĵ� ��� ������ ���� ������� ����� ĵ į ��� �DZü���| ��� ���� Ĵ �� ���ȱ�� �� ��� ������ �ı���z ����ǰ��� į ������� ����| �Ǽ� Ĵ �������¹�����������| ������ �� ���������� �����ļ��Ǻ ����� ����| ��� ���� �� � ��վ�� ������ ���������ѽ� �Ѿ��� ���� �;����� � ������ ���� ��� ������ ���� ������� ����� �� Ѽ ��� �Ծ����‰ ��� ���� �� ɼ ���վ�� �� ��� ������ �Ѿ���� ����Խ��� Ѽ ɼ��ͼ� ���͉ ���� �� ��������ƪ�������Ʃ�� ������ ɼ ü����˽�� ����������� ����� ����� ��� ���� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ���� ������� ����� �� �� ��� �������З ��� ���� �� �� ������� �� ��� ������ �����Ε ��������� �� ������� ���ۗ ���� �� �·�����Ը�������Է�� ������ �� ���������� ����������� ����� �·�� ��� ���� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ���� ������� ����� �� �� ��� �������ߦ ��� ���� �� �� ������� �� ��� ������ �����ݤ ��������� �� ������� ���� ���� �� ���̾�����Ͼ��������� ������ �� ���������� ����������� ����� ���̦ ��� ���� �� � ���� ����� ������������ ������ ���� ������� � ����� ���� ��� ����� ���� ������ ����� �� �� ��� ������� ��� ���� �� �� ����� �� ��� ������ ������� �������� �� ������� ���� ��� �� �������������������ж ������ �� ���������� �������� ����� ���ܶ ��� ���� � �� � ���� �� �� � � � ���� �� � � �� ��� ���� � � � � ��� ��� �� � � � ��� � � ����� ��������� ���� � � �� �� � ����� ��� � ! !%$ $ !! ! $ $ ! $ � $ ! ! $ � ��� � ! %$ � ! � $ ! ! � %� �$ ! ���������� !%%!$ ���� 4$ , $48!70 70%%0# $&-$%4%&%4 .4!30# %3,% #0!7,.0$ , 70%%0# (4%3 %30 70%%0# 70%%0#$ ,1%0# 4% 4 %30 ,7!3,-0%� 4$ , 0),8!701 %30 ,0$,# .4!30#� /0'07 !0/ 4 ,.40% 80� 7,2 4$ (+2) "())� $0#% , &/0#$. #0 4880/4,%07* ,1%0# � ((( H8 @ 8HL5KD KD99D7 8:A89H9:9H43 BH5GD7 9G@9 7D5K@BD8 @ KD99D7 <H9G 9GD KD99D7 ((( KD99D78 @E9D7 H9 H3 9GD @K5G@AD9 ((( H8 @3 D=@L5KD 4E 9GD "@D8@7 BH5GD7� CD;DK45DC H3 @3BHD39 4LD %K@F H8 %+ &<?F=!) ,6<== (38D79 @3 :3CD78B47D HLLDCH@9DK> @E9D7 %+ & ,). 2=== ]M U M]aJY YNNYL MOVMN]NON]IH W]J\YL N\UN LYJUWYM U YNNYL Q]N\ N\Y YNNYL 2=== YNNYLM UZNYL ]N ]H N\Y UJ\UVYN ,). 2=== ]M UH YRUaJY IZ N\Y 7UYMUL W]J\YL XYPYIJYX ]H UHW]YHN ,IaY :U[ ]M :@5;-QT[R6>-5AKQRR5/ =HMYLN UH OHXYLMWILY ]aaYX]UNYS UZNYL :@5;
B?D HSSS sc k cswvo voddob celcdsdeds_^ msrob drkd bovkmoc k voddob gsdr dro voddob HSSS voddobc kpdob sd s^ dro kvrklod+ B?D HSSS sc k^ ohkwvo _p dro Mkockb msrob) nofov
`on s^ k^mso^d B_wo+ Pvkq sc PVKQCgjqhLTCKWaghhKE+ S^cobd k^ e^nobcm_bo swwonskdovi kpdob PVKQ+
YV[ _jjj �z � z��w�� ��{{�y z|�z{�{|{�vu ��w��y {��{ y�w����z � ��{{�y ~�{� {�� ��{{�y _jjj ��{{�yz ��{�y �{ �u {�� ��w����{B YV[ _jjj �z �u ���w�� v� {�� d��z�y ��w��y@ ��}��vw�� �u �u���u{ Yv��B g��� �z gmbhZ~��ckZbnx~b\B juz�y{ �u |u��yz�vy� �������{��� ��{�y gmbhB
qns w��� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ w��� ������� ����� �� �� ��� ��������Z qns w��� �� �� ������� �� ��� |����� ������X ��������� �� ������� q���Z ��� �� �z�r����{�rz�����ztZ ������ �� ���������� ����������� ����� �z�Z
��� ���� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ���� ������� ����� �� �� ��� ��������s ��� ���� �� �� ������� �� ��� ������ ������q ��������� �� ������� ����s ���� �� ��������������������s ������ �� ���������� ����������� ����� ����s
��� ���� �� � ������ ������ ������������ ������ ���� �������� � ������ ���� ��� ������ ���� ������� ����� �� �� ��� �������ƍ ��� ���� �� �� ������� �� ��� ������ �����ċ ��������� �� ������� ���э ���� �� ��������ʮ�������ʭ�� ������ �� ���������� ����������� ����� �����

文字化けの嵐なんだよなあ
数日前に辞書順ずらしてみたときは、charは英小文字使いきると記号に入って、記号使い切ると次はまたaに戻る、って確認したんだけど。

https://zenn.dev/articles/e046d515b7962f/edit

でも、これは文字列だから、zを1文字ずらすとaになってほしい。これは難しいな..
a-zだけの辞書順を作成して、その中でずらすとか。
言うは易く行うは難し

Discussion