Welcome Guest [Log In] [Register]
Welcome to Crypto. We hope you enjoy your visit.


You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free.


Join our community!


If you're already a member please log in to your account to access all of our features:

Username:   Password:
Add Reply
$100 reward - The American ADFGVX Cipher (updated 7/10); aiming to forgo columnar transposition
Topic Started: Jun 22 2014, 01:58 AM (3,228 Views)
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
(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


Edited by Elijah Cross, Jul 10 2014, 09:07 PM.
Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
mok-kong shen
NSA worthy
[ *  *  *  *  *  * ]
Elijah Cross
Jun 22 2014, 01:58 AM
The American ADFGVX cipher .....
Could you please give a reference/link to this American variant?
Offline Profile Quote Post Goto Top
 
novice
Super member
[ *  *  *  * ]
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?

Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
novice
Super member
[ *  *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
novice
Super member
[ *  *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
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.

Edited by Elijah Cross, Jun 29 2014, 05:36 PM.
Offline Profile Quote Post Goto Top
 
novice
Super member
[ *  *  *  * ]
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?
Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
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
Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
I'm now offering $50 to the first person to successfully attack the texts.
Offline Profile Quote Post Goto Top
 
sharpe
Super member
[ *  *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
Elijah Cross
Member Avatar
Advanced Member
[ *  *  * ]
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.
Offline Profile Quote Post Goto Top
 
a649b9e0
Just registered
[ * ]
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]}
}
Offline Profile Quote Post Goto Top
 
1 user reading this topic (1 Guest and 0 Anonymous)
ZetaBoards - Free Forum Hosting
Enjoy forums? Start your own community for free.
Learn More · Register for Free
Go to Next Page
« Previous Topic · Challenges · Next Topic »
Add Reply