|
$100 reward - The American ADFGVX Cipher (updated 7/10); aiming to forgo columnar transposition
|
|
Topic Started: Jun 22 2014, 01:58 AM (3,231 Views)
|
|
Elijah Cross
|
Jun 22 2014, 01:58 AM
Post #1
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
(Edit: Message 5 added July 10)
The American ADFGVX cipher handles the first step of encryption in a manner more complex than its German predecessor, and hopefully, is secure enough that columnar transposition isn't actually needed as a second step.
Setup - Step 1: In this new cipher, A, D, F, G, V and X represent the digits 0 through 5, and the order in which they are used is determined before encryption - in this example, A = 0, D = 1, F = 2, G = 3, V = 4 and X = 5, but in addition to the most familiar order of the letters, there are 719 new possibilities.
Step 2: The Polybius square now has expanded row and column headers - the headers which would be found in the German ADFGVX table, as well as each "shift" of the predetermined order.
- Code:
-
------|ADFGVX ------|XADFGV ------|VXADFG ------|GVXADF ------|FGVXAD ------|DFGVXA ------------- AXVGFD|MA1RI9 DAXVGF|OPQSTU FDAXVG|VWXYZB GFDAXV|2C3D4E VGFDAX|5F6G7H XVGFDA|8J0KLN
Step 3: A key will be used with the square during encryption - "JUNE7TH1981" in this example - and written over the plaintext.
- Code:
-
JUNE7TH1981JUNE7TH1981JUNE7T OURPRINCESSISINANOTHERCASTLE
Encryption - Step 1: From the key letter (J) move to the row containing the plaintext letter (O), using the "wrap" method from top to bottom. Since it's two rows away, the first letter of the digraph is F. Again, from the key letter, move to the column containing the plaintext letter, using the "wrap" method from left to right. It's five columns away, making the second letter of the digraph X.
Note how when moving from the key letter to determine the digraph, the correct group of column/row headers is always the one that has the initial letter of the predetermined ADFGVX sequence to the left of the key letter (rows) and above it (columns).
Step 2: Before encrypting the next plaintext letter, switch the positions of the key and plaintext letters just used.
- Code:
-
------|ADFGVX ------|XADFGV ------|VXADFG ------|GVXADF ------|FGVXAD ------|DFGVXA ------------- AXVGFD|MA1RI9 DAXVGF|JPQSTU FDAXVG|VWXYZB GFDAXV|2C3D4E VGFDAX|5F6G7H XVGFDA|8O0KLN
If the key letter is the same as the plaintext letter, as is the case with the next pair of letters in the example (both U), no switch is performed. (Instead of pencil and paper, I happen to use a 3D, portable setup with movable characters that lock into place.)
After encrypting the example plaintext, the ciphertext reads:
- Code:
-
FX[space]AA[space]DV[space]VF[space]DD[space]XA[space]FV[space]GX[space]DF[space]FG[space]FX[space]AV[space]FF[space]GD[space]DD[space]DF[space]AD[space]XV[space]DX[space]VA[space]AG[space]VX[space]XV[space]FV[space]DD[space]VG[space]XG[space]VG
Challenge Texts: I'll be posting many more than these first two here over the coming days - they all have been encrypted with the same key combinations. Columnar transposition was not performed.
- Code:
-
Message[space]1
AFGXA[space]ADAGD[space]GGVXV[space]DVVVA[space]AAFDV[space]ADXXD[space]XXGGD[space]FAXFF[space]GVXAV[space]DDFGG[space] VDGGX[space]AXXAF[space]VAGXD[space]VXDDD[space]ADVDF[space]FXGDA[space]AVFXX[space]VAGGA[space]AVVDF[space]DAGDA[space] DXGAV[space]VGGFV[space]XDGAA[space]DGGAA[space]FXXAG[space]VVFXV[space]DGFGG[space]DAVVX[space]DVAVF[space]VGXAV[space] VDGXF[space]DGDAF[space]FDGVG[space]XXAGF[space]VFDAG[space]FXXGA[space]XXDGX[space]VXVGV[space]DXGXF[space]VVADA[space] VGVDA[space]GAFXA[space]FXGFV[space]AXVFG[space]AXXXF[space]GXFDD[space]GVVDF[space]GFDVG[space]FFDGF[space]AVAXF[space] VVADA[space]XXXFA[space]AXGVV[space]AXDAD[space]VGFXF[space]FGXGD[space]VAFGD[space]GVGDX[space]DGDVV[space]DAAVX[space] FGAGD[space]DXXAG[space]FXVVF[space]XFAXD[space]VXDVX[space]GFVVX[space]GDXAX[space]GFXFG[space]AXVDD[space]XGVVX[space] AVXGG[space]GFXGD[space]GGAAD[space]GADDX[space]VXXDF[space]XGGFX[space]DVGFA[space]FAAFX[space]FGVAX[space]VVGDV[space] AFXVD[space]DVFGD[space]XAVDV[space]XGAXD[space]DADDD[space]XGAVX[space]AXFAD[space]AXAXD[space]VDFDX[space]AGVDD[space] DGGDF[space]GADXG[space]ADGGG[space]GVXGA[space]GAAAG[space]XXVXV[space]GAVGA[space]GDDFD[space]AVXGX[space]GDFGG[space] XVVXV[space]DXVDX[space]AVGGA[space]XGDGV[space]GAGFV[space]FGXAF[space]GDAVV[space]XGFDG[space]AXVFA[space]DVDVA[space] XGVAX[space]XDVXF[space]GGVVA[space]AGVFA[space]DFGVF[space]XAAGG[space]FGVXD[space]VFD
Message[space]2
DAXAX[space]FAVDG[space]GDGXX[space]GGVVA[space]DDAGV[space]VFXGG[space]FVDXF[space]VFFGD[space]AGVAG[space]VDFFD[space] DVGXD[space]VAXVD[space]XVGVX[space]FGXFF[space]DADVA[space]GVDFF[space]FAVDV[space]DFXFX[space]VDVAX[space]GDGAA[space] VFGXX[space]GAXVD[space]VXVDD[space]ADVDG[space]AFAXA[space]AXFGD[space]VGAVF[space]XXDXA[space]GFDAV[space]GFXXD[space] ADVGA[space]FADGA[space]VDDXX[space]GGFVG[space]DDVFA[space]XAADD[space]ADXXV[space]AVAXF[space]VVDXG[space]VGVDA[space] XAVAV[space]AVVGF[space]XGFGG[space]XGVAA[space]DFAAV[space]DGXFX[space]DXDAG[space]FAVXX[space]AVGVV[space]XGVGV[space] VGAFG[space]FXFFV[space]VGGDF[space]GFXAA[space]DFVFD[space]GDDFF[space]GFAAF[space]DVXXF[space]XAAAF[space]DAFVX[space] XDFVG[space]GVGAF[space]XGAAD[space]VAAGD[space]AVXDD[space]DXFAA[space]VFXVD[space]VGAAX[space]DXDVG[space]DXGVX[space] XXXXD[space]GVVXF[space]GAAAG[space]ADVAA[space]GFDFX[space]AXAAX[space]AVFVF[space]XGXDX[space]XXGGX[space]DDXXV[space] DXXVG[space]VGXAD[space]XFAGV[space]XFDFV[space]VVDVV[space]VDAAV[space]GXFXX[space]VFDDX[space]VGGAD[space]GGFGG[space] GDADG[space]FGDFG[space]FGVAG[space]XDVXF[space]FGXAD[space]DDFAG[space]XVGXF[space]VDVXA[space]XAGAA[space]VXFGX[space] DXAGV[space]XVDVF[space]GDAAX[space]XVXDD[space]XFGFV[space]AFFVA[space]DXAFX[space]XVXXF[space]GGGDF[space]GXXXF[space] FXVAD[space]DVAVA[space]XXADF[space]XFDDX[space]FGFAD[space]FVAVG[space]VXXGX[space]VDAAD[space]ADFAF[space]VAGGD[space] DGVVF[space]VVGGD[space]AVAGA[space]FFVVV[space]DVXAG[space]D
Message[space]3
AXVFF[space]VAXGG[space]VAADD[space]AFDAD[space]FXAGG[space]AAAFX[space]GFXAA[space]GDADF[space]VVFVV[space]VDAGV[space] DFXDA[space]DXAAX[space]VAVVG[space]AVGVG[space]VVAXA[space]AFDAF[space]AFDDA[space]FVFFV[space]DFFXD[space]XXFVA[space] DDXAG[space]AFVVF[space]AAGGV[space]VGAGG[space]DFDFX[space]XDVFD[space]FAAAX[space]GXDXD[space]AXVXX[space]AXVAA[space] FXGVV[space]ADGFX[space]FFAGA[space]AGAGF[space]VXXAV[space]DFGVF[space]GGFAX[space]DVDAD[space]AFADF[space]FGFVA[space] FDXFF[space]FGAGX[space]GAVVG[space]DXDAD[space]FAVFA[space]GXVVF[space]VDAXV[space]FXFFG[space]GDGXG[space]AGXXD[space] GXVAV[space]AAXFF[space]XGGFX[space]DVFDV[space]FDAVX[space]AFAXD[space]VAVFG[space]GXDDV[space]DDAAD[space]VXVXG[space] GDAAX[space]VAXAD[space]FXGAX[space]DAXGA[space]AFXAD[space]GFFGV[space]AGFVV[space]GFAFV[space]XAAGX[space]GDGXF[space] DVVGG[space]FGVGA[space]XDDDD[space]FXFFX[space]VAGGX[space]AXXDD[space]AFDVG[space]DAAAA[space]AGXFV[space]DAAFG[space] XGDFF[space]GAGVD[space]DFAFV[space]VFVAF[space]XGXVV[space]XAAFX[space]VADVG[space]VAFGD[space]VADVA[space]GVADG[space] DAGFX[space]FXXXA[space]GXVXA[space]GDFAF[space]FXAAA[space]GDFAV[space]FVVFV[space]FAXDX[space]AAFFX[space]DDAGG[space] ADGVF[space]FFXXA[space]DFXFA[space]VDVGX[space]XGFXA[space]FGGVG[space]GXVGG[space]ADDFX[space]AXGDV[space]XGADA[space] AGDVX[space]VXVAF[space]XADGG[space]GDADX[space]XGGFG[space]AGAFX[space]DGVFF[space]GXXDD[space]DVXAA[space]GAGVD[space] DVDXV[space]VDFGV[space]AADVD[space]DXVDF[space]VFGFD[space]XADFG[space]DVAGV[space]AVFAV[space]FFXFV[space]AVDGF[space] FFXFF[space]VVGVA[space]DADAV[space]FVAAX[space]XDXVF[space]DXAAA[space]GFFVD[space]AFXGG[space]FXAGD[space]VAAXD[space] AADFF[space]FVDVF[space]GAAXA[space]VFAXA[space]DXVDA[space]VDDAA[space]VFGAA[space]GFDGG[space]AADXX[space]DFXXV[space] XDAXF[space]AAFFG[space]FGDDF[space]DFAXD[space]AVFDG[space]XFXVX[space]FVAGF[space]GVVDG[space]VFDFV[space]GGGAA[space] XGXGX[space]FXVGA[space]XXVGA[space]VFVVA[space]FGFFA[space]XDA
Message[space]4
DVXAG[space]XVGGD[space]DAXGX[space]DAFDG[space]DDAVG[space]ADDAD[space]GVDGX[space]XGXXX[space]AFFDX[space]GDDVV[space] VVVVD[space]GGGAG[space]DADFG[space]AFXAF[space]DFFVF[space]GDGFA[space]FXGGD[space]VADFX[space]AVVDF[space]FXXFX[space] VADXD[space]AGAXG[space]VVAGV[space]XGXGX[space]VVVFF[space]AVFDG[space]XGGDD[space]DAAGA[space]GAXFF[space]VVDDA[space] XDGDG[space]XVAVF[space]XAVAG[space]DDDFX[space]VVAAD[space]FVGDG[space]VGXGG[space]AAAAX[space]AXXAA[space]XVVGF[space] GGGGX[space]GGGDA[space]AXAVA[space]VGGXV[space]FGDFX[space]DDDAF[space]DVVAX[space]VXGGF[space]VDAFA[space]FFADV[space] FAXGF[space]FDDAX[space]FGAGG[space]FFGGV[space]GFDAV[space]AFAGF[space]AGADG[space]DXFXD[space]AGVAG[space]FGGDA[space] DDAFG[space]FDVDG[space]VXDVF[space]XVDFA[space]GGAFF[space]VGFXD[space]XAVFV[space]GDFXG[space]AFGAG[space]DFAGX[space] XGDFG[space]VAFAV[space]AGAFX[space]ADFGX[space]XVVGF[space]XDADA[space]FAAFG[space]GAXFX[space]DGVDX[space]FVAVG[space] AFVDF[space]VXGVA[space]FGADV[space]XXXFV[space]XDGAA[space]GGVDD[space]GGGVV[space]GXFVV[space]XAAAG[space]XADXG[space] DAGAF[space]DXVGV[space]DFADV[space]AVXXG[space]VXGDG[space]XDDFG[space]ADFDA[space]GAGVG[space]XVGAA[space]DXXXF[space] FVFFV[space]DFXDD[space]VFAGX[space]ADAXA[space]FFFXX[space]VDAFG[space]VGAFF[space]DGXVD[space]AGAGG[space]DVGVV[space] XFAAV[space]FVDVV[space]GVGVD[space]VAVAV[space]XDAGA[space]FVXFV[space]GXGXF[space]DXGDD[space]FAGAF[space]XGXAX[space] FVAXG[space]FVVFD[space]XAAFF[space]AGAVF[space]DDGAA[space]XGXFD[space]AFFDF[space]DGDXF[space]GVDFV[space]XFFGF[space] GXXAF[space]AFXVF[space]AVXAG[space]XVXAA[space]XFGFA[space]AXAAV[space]GDXDV[space]DAGVA[space]DDGGA[space]XFGAA[space] FAXGD[space]GGDGF[space]XFXGA[space]GVFXF[space]GXFFD[space]FGDVV[space]DXDFG[space]XGFAX[space]VDADA[space]ADFGA[space] DDAXV[space]DGADX[space]DGVDV[space]FXVGX[space]VAAAG[space]GXGXF[space]XGXVD[space]FDVVF[space]DAAFV[space]DDADX[space] AAGAF[space]XVVFF[space]VAVDF[space]XDXDA[space]DADAF[space]DAXFF[space]AVFDF[space]DVFVD[space]DDFFV[space]DGAFG[space] GFFGV[space]GXXGG[space]GFXXV[space]AGVVG[space]DDFAX[space]XVFAV[space]VDFAA[space]GAXGA[space]FGDDF[space]FXXVF[space] XAXXG[space]GXXDD[space]XDFVF[space]ADDGX[space]FDXVD[space]FVAVX[space]FFFDG[space]XVFAX[space]DAGXF[space]VGFGG[space] XXFVV[space]ADGXX[space]GXFVG[space]XFGFA[space]FXVVA[space]GVFFF[space]FXAAD[space]FFGAA[space]AGFFV[space]VXGDD[space] VFFDD[space]GGXVX[space]DVFGV[space]VXXXD[space]DDXVX[space]AAXGA[space]VGGAX[space]DFFFX[space]GXXDD[space]AGADG[space] XGDDG[space]AXXGV[space]XXAAF[space]XGAXF[space]XXVGG[space]AGGVA[space]XDAXF[space]GXGFF[space]AFAAF[space]XXXXF[space] GAXFV[space]AAXFF[space]ADGFG[space]GFVGX[space]XXADX[space]GXVVV[space]DGVVA[space]GFDDG[space]GVAVA[space]VAADG[space] XDDVV[space]XVDXV[space]VADXF[space]XXVAA[space]FDVAV[space]FVVGV[space]GGGAX[space]FXDGV[space]XVVGD[space]GXGDA[space] VFADG[space]FAGAG[space]DDDVX[space]GFXDD[space]XAAAG[space]AGVGG[space]VDGGV[space]FFFVX[space]DGXDD[space]FXGFD[space] GGDXF[space]VAXXF[space]XGVDX[space]GVGGA[space]DXDAD[space]AVXGV[space]FFVAG[space]XGVXD[space]DXAXG[space]XGDAD[space] FVDGF[space]DGAGD[space]GDVDG[space]GDGFX[space]XDXGV[space]XFDXF[space]GVADX[space]FXXFF[space]AGDFV[space]DFFGF[space] DVAXA[space]FDDXA[space]ADDAV[space]AVXVA[space]VAAAX[space]AXAAA[space]XVFDV[space]FVGDX[space]DADDA[space]FFFVG[space] DDVDV[space]GDGFF[space]VFVGV[space]AGAAF[space]VFGXF[space]GFGXD[space]ADXGA[space]FGXDX[space]FXDAV[space]AAXAG[space] XFDXA[space]AXXGG[space]GXVFG[space]GXDAA[space]ADXDX[space]XFFFF[space]XGVDX[space]FXFDF[space]ADFDA[space]VFFAF[space] VFADG[space]GXAAG[space]XXFAX[space]AFVXD[space]DFGFV[space]FXDVV[space]GFGGG[space]XFVFA[space]FAXAV[space]VAXDG[space] GVAAA[space]XDGDV[space]VAGAF[space]VDDDD[space]DGFXA[space]AGVDA[space]VGAXD[space]VDXGA[space]GFXAV[space]DVDDA[space] AFFDD[space]FDFAG[space]GGAFV[space]FAFXF[space]GVFDA[space]XFAAF[space]XDFDX[space]GXFDG[space]VVVGF[space]FVDDX[space] FVFFA[space]XFVAX[space]XDVXD[space]AAGDX[space]VADAA[space]VVGVD[space]DFXFA[space]XVVVD[space]GFDVA[space]VXXAF[space] XAXXX[space]FXVGG[space]GADAA[space]GDAAG[space]FFAVX[space]XDAAV[space]DFDFX[space]DDAGD[space]GDVXA[space]FGXXV[space] FGXVX[space]VDDXG[space]FGDVF[space]VADFX[space]AFVVA[space]XGDFA[space]GFFFV[space]FVGFA[space]VXFFA[space]FDXDX[space] XAFXF[space]AGGGG[space]VVVGX[space]DDAVF[space]AAFDG[space]VVAAV[space]XAXFG[space]FGVFX[space]DGDVD[space]GGVDA[space] DAFVD[space]DDFAX[space]XGVGD[space]GAXFD[space]DDDDD[space]VAGDG[space]VVGFG[space]FGAAA[space]DDVVD[space]XDDXD[space] GAXAD[space]DXXXV[space]FDVFD[space]XFDXX[space]AAGFD[space]DXFGD[space]DXDDX[space]DVAGX[space]VXGDD[space]FAVFA[space] DFDVG[space]AFAXA[space]AGFVD[space]AGGFG[space]GXGFF[space]XFXFV[space]VFDFX[space]FXDFF[space]ADDFF[space]ADGGX[space] GAGGV[space]AXAXV[space]XGFVV[space]AAFDF[space]GDGAF[space]AXAFX[space]FAXVA[space]VAAAA[space]FXXFV[space]GVFXG[space] AGVDX[space]DFDAX[space]XXDAF[space]VXADX[space]GVXFX[space]VGXGX[space]DFGAG[space]XAFGA[space]XFGFG[space]AXXGX[space] GXAVD[space]XXFFF[space]GAGVV[space]GDAAG[space]AXVFA[space]GVXDA[space]GVFGG[space]ADDVF[space]DGXVX[space]DAXFX[space] GGVGG[space]XGVFF[space]DDFGF[space]XVXXF[space]GXGVG[space]AFGDX[space]DGXAD[space]XDFAA[space]GGVAG[space]VXGAV[space] VFVDA[space]XDAXV[space]ADXDV[space]VFDAX[space]VDAVF[space]AVXGX[space]DDGD
Message[space]5
VDXAX[space]GAVFF[space]DAXFV[space]AVFVV[space]FFGDV[space]VGDDV[space]AGGGV[space]GVDGX[space]XAGGF[space]AXDFD[space] VFXFG[space]GXXDD[space]GGDAA[space]AAAVV[space]DXGAX[space]XGDGD[space]XFADA[space]GAGGA[space]VVVGD[space]GADAA[space] VAFVF[space]GGXAG[space]GDVFX[space]VGAAG[space]AAFDV[space]AVVXG[space]GDDDD[space]XGFFF[space]AFDAD[space]VXDAA[space] GGDVD[space]GVVFA[space]ADXVF[space]DFXDD[space]GDVGX[space]AFAAF[space]VXDDA[space]FDXGX[space]GXVAX[space]XGFXX[space] FAFAG[space]AVDFV[space]GFFAD[space]DDGFA[space]AVXXX[space]GVDXV[space]XADXG[space]XVGDF[space]DVGXD[space]FVVAF[space] GVGAF[space]VDGDG[space]FFDGX[space]DDFGA[space]XVDFX[space]FVXDA[space]FVVAV[space]XAXVA[space]DDDGX[space]DXAVA[space] DXAFV[space]XVFVX[space]FXGAG[space]GFDAG[space]DDXGV[space]FAXAD[space]XDFDA[space]AAFAG[space]FVFVA[space]XGGAF[space] VXFXA[space]VXDXG[space]FDVFF[space]ADVVG[space]VXAVV[space]XFVDV[space]AVAVF[space]XDVGX[space]ADVVA[space]FXDXG[space] DDXDF[space]DADGF[space]AVVGF[space]GVFFD[space]GXAVD[space]DGFXF[space]XDAXF[space]FVVFV[space]VFAXA[space]FVFDV[space] XAVVV[space]DDFAV[space]VDXAF[space]XGDVV[space]XFVDV[space]DAAGX[space]XGFVA[space]FAFAF[space]VFAAG[space]DXVVV[space] GAFXV[space]FDVDG[space]AAVGX[space]XVXXG[space]GFVGG[space]FVGFV[space]DGGAA[space]GDGGX[space]XDDXD[space]AXGDD[space] XXFGA[space]AGVVD[space]GFVDA[space]FDGAX[space]FGXVD[space]XXXFG[space]VVVAX[space]GVFGF[space]FAFDF[space]FGFDA[space] AXVVF[space]VAFGD[space]DFXFD[space]XDDFA[space]DVVAG[space]GGVAG[space]AVADA[space]AFAVX[space]XGFGD[space]VVXDX[space] FFADD[space]GXXFF[space]AAXXA[space]DVXGA[space]AFXGG[space]FAVFF[space]FAFVG[space]AGXVX[space]FFXDA[space]DFGXD[space] DDGFX[space]DVVDX[space]FDVVF[space]FGFFF[space]GFDDD[space]VADXD[space]AGFAV[space]VXXFX[space]DGGDD[space]XDGDD[space] GGDGV[space]XFDFV[space]GAGFX[space]XGAXA[space]XADGV[space]GAFDD[space]VAVDX[space]GXFXF[space]VFFXA[space]XXDAF[space] DDAVA[space]AGDAA[space]VDDAG[space]FFXGA[space]XAXXX[space]AFDGV[space]GDDGX[space]AAAXA[space]AFGDD[space]VFAAX[space] GVVXV[space]XFXDG[space]FGVXD[space]DAADA[space]FFVVD[space]DADDV[space]GVGVF[space]GAVDG[space]VDAAX[space]DVFXD[space] FGGVD[space]AFDDV[space]FDFDX[space]DXGDX[space]DGFGG[space]GXVDV[space]FFDFF[space]GGFDF[space]XXXAV[space]XGFGX[space] GAGFV[space]ADGDV[space]GDDGA[space]VFXAF[space]VGXVG[space]XGVDV[space]GGAAG[space]GAADX[space]XXFXX[space]VGDGG[space] XFDFA[space]VXGAA[space]VVAGD[space]XDXXV[space]GXVGA[space]AVDDD[space]FVVFX[space]AAVFG[space]GGDAX[space]XAXVV[space] DFDGA[space]DFFDX[space]GVXDF[space]FXDDX[space]XXGGX[space]FAGAD[space]FVGXG[space]XXFFV[space]FXAVV[space]FAXVD[space] AFGVG[space]VFFXG[space]FGDFD[space]VGXXG[space]FXAVA[space]FVFGG[space]AAFFA[space]GXXVV[space]DGXXA[space]AGAXG[space] VVFAX[space]VVGFG[space]VDDDG[space]XXDXD[space]XGGVD[space]XGFFV[space]DXGAX[space]DXXGD[space]FGGVV[space]FFXXG[space] FXAGX[space]XXVAF[space]VXDXD[space]ADDGV[space]XAXXG[space]AXVGG[space]VAFVD[space]XGVGD[space]AFAVA[space]GVAXD[space] AXXAD[space]GXXAA[space]GXVDG[space]FAXDX[space]DVVFX[space]GXDVG[space]DAADA[space]FDDVF[space]XVGDA[space]GGXFX[space] DFVFD[space]DVXXA[space]XDXAA[space]FFXDG[space]GFXVA[space]XAADG[space]VGDXF[space]FXGDA[space]AGAXF[space]AFXVF[space] GFGGX[space]FXVVV[space]GGGVF[space]AADAA[space]GAGXF[space]FGVAV[space]XDGVF[space]X
|
|
|
| |
|
Elijah Cross
|
Jun 28 2014, 03:02 AM
Post #2
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
My own analysis makes me think it's easy enough to determine which digraph indicates the key letter is the same as the plaintext letter, but beyond that, I'm at a loss.
|
|
|
| |
|
mok-kong shen
|
Jun 28 2014, 10:47 AM
Post #3
|
- Posts:
- 1,874
- Group:
- Members
- Member
- #3,310
- Joined:
- December 12, 2009
|
- Elijah Cross
- Jun 22 2014, 01:58 AM
The American ADFGVX cipher ..... Could you please give a reference/link to this American variant?
|
|
|
| |
|
novice
|
Jun 28 2014, 12:09 PM
Post #4
|
- Posts:
- 218
- Group:
- Members
- Member
- #3,939
- Joined:
- September 29, 2013
|
Elijah,
Thanks for the edited version. I now follow the enciphering process. But I have a question.
- Quote:
-
------|ADFGVX ------|XADFGV ------|VXADFG ------|GVXADF ------|FGVXAD ------|DFGVXA ------------- AXVGFD|MA1RI9 DAXVGF|OPQSTU FDAXVG|VWXYZB GFDAXV|2C3D4E VGFDAX|5F6G7H XVGFDA|8J0KLN
Only the bottom right hand square is used in the enciphering. So can you explain please the purpose of the other three squares?
|
|
|
| |
|
Elijah Cross
|
Jun 28 2014, 01:28 PM
Post #5
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
mok-kong, this is a variant I created.
novice, there are only two other squares (the upper left square with no letters was to handle formatting). The two other squares are the column and row headers - think of how the German ADFGVX square would look, with expanded headers. Their purpose is to eliminate counting through the square - in the example, if you look to the left of the key letter J in the headers and find the A, you can use that set of headers as a guide to the other row, which is headed by an F. Likewise for the column headers.
|
|
|
| |
|
novice
|
Jun 29 2014, 08:16 AM
Post #6
|
- Posts:
- 218
- Group:
- Members
- Member
- #3,939
- Joined:
- September 29, 2013
|
- Elijah
-
Their purpose is to eliminate counting through the square
That's cool.
[on edit]
- Elijah
-
Encryption - Step 1: From the key letter (J) move to the row containing the plaintext letter (O), using the "wrap" method from top to bottom. Since it's two rows away, the first letter of the digraph is F. Again, from the key letter, move to the column containing the plaintext letter, using the "wrap" method from left to right. It's five columns away, making the second letter of the digraph X.
So JO encrypts to FX.
Following the same logic, doesn't plain FM also encrypt to FX? because F is also 2 rows from M and they are also 5 columns apart. If this is true then deciphering a bigram could lead to any one of 36 results, which isn't too good.
Or have I missed something here?
Edited by novice, Jun 29 2014, 10:38 AM.
|
|
|
| |
|
Elijah Cross
|
Jun 29 2014, 02:10 PM
Post #7
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
- novice
-
...deciphering a bigram could lead to any one of 36 results, which isn't too good.
It might not be too good for the cryptanalyst, but it's not a hurdle for the intended recipient of the message, who knows the keyword. In our example, though JO, FM, and 34 other pairs encrypt to FX, the recipient knows the first keyword letter is J, and therefore knows the FX in the cipher text is leading from J to O.
|
|
|
| |
|
novice
|
Jun 29 2014, 03:15 PM
Post #8
|
- Posts:
- 218
- Group:
- Members
- Member
- #3,939
- Joined:
- September 29, 2013
|
- Elijah
-
the recipient knows the first keyword letter is J, and therefore knows the FX in the cipher text is leading from J to O.
Ah yes! that makes every sense. But then the two squares holding the ADFGVX are redundant.
|
|
|
| |
|
Elijah Cross
|
Jun 29 2014, 05:10 PM
Post #9
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
I'm not sure what you're saying, here.
Edit: I think I see what you're saying now. The squares with the ADFGVX letters are column and row headers, but a specific one is used depending on where you're starting. using the example, if ADFGVX is the order, and J is the key letter, then the set of row headers we want to use are the the ones that have the A heading the row with the J in it. That makes it so the row with the O is headed by the F in that same set of headers. Likewise when using the column headers - the group used is the one with the A heading the column with the J in it, making the X in the same group of headers the letter above the column with O.
Another way to look at it is that the key letter is always in the AA position. (or whatever letter is being used as the first in the keyed ADFGVX). So, when the key letter is J, the square, were this the German ADFGVX, would be
- Code:
-
-[space]ADFGVX --------- A|J0KLN8[space] D|A1RI9M[space] F|PQSTUO[space] G|WXYZBV[space] V|C3D4E2[space] X|F6G7H5
Here, you can see O is at FX. Of course, permuting the square that much for each encryption would be impractical, so that is why the shifted headers exist.
|
|
|
| |
|
novice
|
Jun 30 2014, 08:49 AM
Post #10
|
- Posts:
- 218
- Group:
- Members
- Member
- #3,939
- Joined:
- September 29, 2013
|
What I am trying to say is that the two squares containing ADFGVX are not needed to make the en/decipherment.
This algorithm enciphers without using the squares: 1. In the mixed alphabet, locate the plain letter and the letter from the periodic key; 2. determine the differences between their rows and columns (as you have described); 3. convert these difference to the appropriate letters, using 0=A, 1=B...
This algorithm can be implemented in just a few lines of code.
In your message 1 the letter frequencies are: A98 D97 F72 G114 V102 X105 Does the least frequent letter F stand for zero?
|
|
|
| |
|
Elijah Cross
|
Jun 30 2014, 03:54 PM
Post #11
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
True, the headers aren't needed if implementing the cipher via code (which I hope to do - I just have to learn to code first). If you're using it another way, like the portable device I have for it, then you might want the headers, since it eliminates counting/memorizing, much in the way code would.
As far as the challenge texts here,
Spoiler: click to toggle F does not equal 0
|
|
|
| |
|
Elijah Cross
|
Jul 20 2014, 01:41 PM
Post #12
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
I'm now offering $50 to the first person to successfully attack the texts.
|
|
|
| |
|
sharpe
|
Aug 1 2014, 03:11 PM
Post #13
|
- Posts:
- 191
- Group:
- Members
- Member
- #3,432
- Joined:
- November 30, 2010
|
For the record, I really want to try this. I've not had much crypto time lately. But I'm letting you know I've seen the thread and it's of interest to me.
|
|
|
| |
|
Elijah Cross
|
Aug 8 2014, 12:11 AM
Post #14
|
- Posts:
- 97
- Group:
- Members
- Member
- #3,337
- Joined:
- April 3, 2010
|
Thanks, sharpe. I have been looking for someone who can help turn the algorithm into an application, so I've not been putting up new texts because of that and other things taking my time, but I'll get some more up there soon.
|
|
|
| |
|
a649b9e0
|
Sep 15 2014, 12:28 PM
Post #15
|
- Posts:
- 19
- Group:
- Members
- Member
- #4,156
- Joined:
- September 14, 2014
|
- Code:
-
// //[space][space]Public[space]Domain[space]2014,[space]Do[space]what[space]you[space]want,[space]don't[space]blame[space]me. // //[space][space]Code[space]based[space]on[space]improved[space]ADFGVX[space]Cipher[space]by[space]Elijah[space]Cross. // //[space][space]This[space]can[space]take[space]an[space]alphabet[space]of[space]any[space]size[space]as[space]long[space]as[space]the[space]alphabet[space]=[space]the[space]header[space]squared. //[space][space]The[space]alphabet[space]must[space]contain[space]each[space]character[space]only[space]once[space]or[space]you're[space]gonna[space]have[space]a[space]bad[space]time. // using[space]System; using[space]System.Text;
public[space]class[space]CrossCipher[space]{
[space]private[space]const[space]string[space]DEFAULT_ALPHABET[space]=[space]"MA1RI9OPQSTUVWXYZB2C3D4E5F6G7H8J0KLN"; [space]private[space]const[space]string[space]DEFAULT_HEADER[space]=[space]"ADFGVX";
[space]private[space]char[,][space]polybius_square; [space]private[space]int[space]square_size; [space]private[space]string[space]alphabet; [space]private[space]string[space]header; [space]private[space]bool[space]force_upper;
[space]//[space]Construct[space]Polybius[space]Square[space]and[space]allow[space]for[space]nonstandard[space]size/alphabet/header [space]//[space]alpha.Length[space]must[space]be[space]>=[space]header.Length[space]squared[space]and[space]no[space]repeating[space]characters [space]public[space]CrossCipher(string[space]alpha[space]=[space]DEFAULT_ALPHABET,[space] [space][space][space][space][space][space]string[space]head[space]=[space]DEFAULT_HEADER,[space]bool[space]force_upper[space]=[space]true)[space]{ [space][space]alphabet[space]=[space]alpha; [space][space]header[space]=[space]head; [space][space]square_size[space]=[space]header.Length; [space][space]this.force_upper[space]=[space]force_upper; [space][space]Reset(); [space]}
[space]public[space]void[space]Reset()[space]{ [space][space]polybius_square[space]=[space]new[space]char[square_size,[space]square_size]; [space][space]for[space](int[space]i[space]=[space]0;[space]i[space]<[space]square_size;[space]i++)[space] [space][space][space]for[space](int[space]j[space]=[space]0;[space]j[space]<[space]square_size;[space]j++)[space] [space][space][space][space]polybius_square[i,[space]j][space]=[space]alphabet[i[space]+[space](j[space]*[space]square_size)]; [space]}
[space]private[space]string[space]SanitizeString(string[space]s,[space]string[space]alpha)[space]{ [space][space]var[space]sb[space]=[space]new[space]StringBuilder(); [space][space]if[space](force_upper) [space][space][space]s[space]=[space]s.ToUpper(); [space][space]foreach[space](char[space]c[space]in[space]s) [space][space][space]if[space](alpha.IndexOf(c)[space]>=[space]0)[space][space][space] [space][space][space][space]sb.Append(c); [space][space]return[space]sb.ToString(); [space]}
[space]public[space]string[space]SanitizeString(string[space]s)[space]{ [space][space]return[space]SanitizeString(s,[space]alphabet); [space]}
[space]private[space]int[][space]IndicesOf(char[,][space]box,[space]char[space]c)[space]{ [space][space]for[space](int[space]i[space]=[space]0;[space]i[space]<[space]square_size;[space]i++) [space][space][space]for[space](int[space]j[space]=[space]0;[space]j[space]<[space]square_size;[space]j++) [space][space][space][space]if[space](box[i,[space]j][space]==[space]c) [space][space][space][space][space]return[space]new[space]int[][space]{i,[space]j}; [space][space]return[space]null; [space]}
[space]private[space]void[space]Switch(int[][space]ind1,[space]int[][space]ind2)[space]{ [space][space]char[space]c[space]=[space]polybius_square[ind1[0],[space]ind1[1]]; [space][space]polybius_square[ind1[0],[space]ind1[1]][space]=[space]polybius_square[ind2[0],[space]ind2[1]]; [space][space]polybius_square[ind2[0],[space]ind2[1]][space]=[space]c; [space]}
[space]public[space]string[space]Encrypt(string[space]plaintext,[space]string[space]key)[space]{ [space][space]plaintext[space]=[space]SanitizeString(plaintext,[space]alphabet); [space][space]key[space]=[space]SanitizeString(key,[space]alphabet); [space][space]var[space]sb[space]=[space]new[space]StringBuilder(); [space][space]for[space](int[space]i[space]=[space]0;[space]i[space]<[space]plaintext.Length;[space]i++)[space]{ [space][space][space]int[][space]p_ind[space]=[space]IndicesOf(polybius_square,[space]plaintext[i]); [space][space][space]int[][space]k_ind[space]=[space]IndicesOf(polybius_square,[space]key[i[space]%[space]key.Length]); [space][space][space]int[space]x[space]=[space](p_ind[0][space]>=[space]k_ind[0])[space]?[space](p_ind[0][space]-[space]k_ind[0])[space]:[space](square_size[space]-[space]k_ind[0][space]+[space]p_ind[0]);[space] [space][space][space]int[space]y[space]=[space](p_ind[1][space]>=[space]k_ind[1])[space]?[space](p_ind[1][space]-[space]k_ind[1])[space][space]:[space](square_size[space]-[space]k_ind[1][space]+[space]p_ind[1]); [space][space][space]char[space]cy[space]=[space]header[y];[space] [space][space][space]char[space]cx[space]=[space]header[x]; [space][space][space]Switch(p_ind,[space]k_ind); [space][space][space]sb.AppendFormat("{0}{1}[space]",[space]cy,[space]cx); [space][space]} [space][space]return[space]sb.ToString(); [space]}
[space]public[space]string[space]Decrypt(string[space]ciphertext,[space]string[space]key)[space]{ [space][space]ciphertext[space]=[space]SanitizeString(ciphertext,[space]header); [space][space]key[space]=[space]SanitizeString(key,[space]alphabet); [space][space]var[space]sb[space]=[space]new[space]StringBuilder(); [space][space]for[space](int[space]i[space]=[space]0;[space]i[space]<[space](ciphertext.Length[space]-[space]1);[space]i[space]=[space]i[space]+[space]2)[space]{ [space][space][space]int[space]y[space]=[space]header.IndexOf(ciphertext[i]);[space] [space][space][space]int[space]x[space]=[space]header.IndexOf(ciphertext[i[space]+[space]1]); [space][space][space]int[][space]k_ind[space]=[space]IndicesOf(polybius_square,[space]key[(i[space]/[space]2)[space]%[space]key.Length]); [space][space][space]int[][space]p_ind[space]=[space]new[space]int[][space]{(k_ind[0][space]+[space]x)[space]%[space]square_size,[space](k_ind[1][space]+[space]y)[space]%[space]square_size}; [space][space][space]sb.Append(polybius_square[p_ind[0],[space]p_ind[1]]); [space][space][space]Switch(p_ind,[space]k_ind); [space][space]} [space][space]return[space]sb.ToString(); [space]} }
|
|
|
| |
| 1 user reading this topic (1 Guest and 0 Anonymous)
|