AlphaDHE - DiffieHellman Ephemeral for A-Z ciphers
Note: Requires pycube and pycrypto to be installed.
Uses 1024 bit primes by default. The alpha.py script allows two parties to develop a shared secret by exchanging values. The resulting secret key is hashed using pycube to create a key of desired size. (Default is 32 letters)
Script usage:
Initiator: python alpha.py init
Other party: python alpha.py
Example
- Initiator generates g, p and his secret
Initial step: Send g and p to your peer
g: BFHJJCAGACDCJDDFCIJHIFIFJJFFEBEBECEJDIGHDADCIIEDIBDJDEBEDAFGAEHDIEFJJFHDGADEGEABAHFGBHGBFCBFABFJHFHFJHIEBDFJDCJCJBBEDJFCIJHHDCJHABBJBGGGFJHGDJEJBHJFEFCAECAAEHIFIIEGHJBBBGIFJFBGBDJIHJCFEAGBDBBDBFHIAJBAHICIGEFFJIAIGGHADGCFFGEIEBGBFCGFBFGGIJBCACDIJBAJFADEEADIBAHHGDFHDJCJJAJFACHBGJIFGIFIHAGJECBHIBHIDHEHHJECIDEAD
p: BAJHHDBAIFHIFJDCCGCFDFEJGJJHFDBJEGEJCDBBFBIHJADHGHDHDCCHACBJHCGGDBIABHBIEHJHGHAJIIJCEGGJEFHIDJDDHBICIEEBJEEJGCBAHBBCECJEEBGGGGHJBJAJIAAGEEBDEDAGFECHHBICJBCIEFEDDBGJICGHHDEEIHAAADFAHIFCIJJCEEDGEBIGBCCECHBEFEGHGIEFJEBABDACBIFFGBBGBGIHJEIHGJBAEJAEHCIBFDCIGDJDIBGCBBJIIBHCIDIBHHGABDBGJHEJEFEEJAGDEHBBFAEEAIDAIHCJJ
Step 1: Send this public key to your peer
DDJICJJFHHAIHFGBHEJIBEHAJHEBEFCIAIJECDIDBHFEBIHBFFJBAGGHJBAIAACBJDJBDEDFAACGGFACHIJGAFJJDAFJDAJFHAFJGEIGIJJDBBHHAEGDDGAFEFDDDBJFJGIACBHBCCAAAAIECAEGAHGJFGGADBCDEJGBGAIGFHDIDCDIFJCCJJFCDEAIDJEBAHHAGBBJHFDEJICEJCDEGFGEHCHGCBHCCHBGEEEHBBAHEGGDIGECDHGDCEHDABJABCBIBGDBHCFAIICDHCGJGAAFBEJIDECEHACGAJDAEBDJBBAFAJC
- Other party generates a secret and inputs the inititor's g and p values and calculates public key which is sent to the initiator.
Enter your peer's g value: BFHJJCAGACDCJDDFCIJHIFIFJJFFEBEBECEJDIGHDADCIIEDIBDJDEBEDAFGAEHDIEFJJFHDGADEGEABAHFGBHGBFCBFABFJHFHFJHIEBDFJDCJCJBBEDJFCIJHHDCJHABBJBGGGFJHGDJEJBHJFEFCAECAAEHIFIIEGHJBBBGIFJFBGBDJIHJCFEAGBDBBDBFHIAJBAHICIGEFFJIAIGGHADGCFFGEIEBGBFCGFBFGGIJBCACDIJBAJFADEEADIBAHHGDFHDJCJJAJFACHBGJIFGIFIHAGJECBHIBHIDHEHHJECIDEAD
Enter your peer's p value: BAJHHDBAIFHIFJDCCGCFDFEJGJJHFDBJEGEJCDBBFBIHJADHGHDHDCCHACBJHCGGDBIABHBIEHJHGHAJIIJCEGGJEFHIDJDDHBICIEEBJEEJGCBAHBBCECJEEBGGGGHJBJAJIAAGEEBDEDAGFECHHBICJBCIEFEDDBGJICGHHDEEIHAAADFAHIFCIJJCEEDGEBIGBCCECHBEFEGHGIEFJEBABDACBIFFGBBGBGIHJEIHGJBAEJAEHCIBFDCIGDJDIBGCBBJIIBHCIDIBHHGABDBGJHEJEFEEJAGDEHBBFAEEAIDAIHCJJ
Step 1: Send this public key to your peer
BHIJDBJEGGBEDJJDBGECHHIAIDEDFJGEAIAGIEAHJHBJIFGHIADGJJGDDCFJCEGEJIIDEEHDJGCFHACEAHAAFIBIGIFDCDDJEBDIAJEHHHHDICEDEIJBIFBJEJDIJCFIIBGEHDDGBHGEFEGJGEBAHCGDAHECHIJEEJAHIDJHCJDFFAACDAFDDEIJDIBFJJEJDFJAJJDBJDJDGGCCEGCAIDBDCBAADEJGCAIHGEHDCGHFBDCIHBHJFAFAACEJBIADCHGDECHEEDAEEGJJHHHDCEAAACEIGEJGCEJIBFAGIFBAFDFFAAB
- Initiator computes the shared secret from other party's public key, hashes the result and arrives at the secret session key
Enter peer's public key: BHIJDBJEGGBEDJJDBGECHHIAIDEDFJGEAIAGIEAHJHBJIFGHIADGJJGDDCFJCEGEJIIDEEHDJGCFHACEAHAAFIBIGIFDCDDJEBDIAJEHHHHDICEDEIJBIFBJEJDIJCFIIBGEHDDGBHGEFEGJGEBAHCGDAHECHIJEEJAHIDJHCJDFFAACDAFDDEIJDIBFJJEJDFJAJJDBJDJDGGCCEGCAIDBDCBAADEJGCAIHGEHDCGHFBDCIHBHJFAFAACEJBIADCHGDECHEEDAEEGJJHHHDCEAAACEIGEJGCEJIBFAGIFBAFDFFAAB
Secret Session key: QYPMITUSMHCYCZEC
- Other party computes the shared secret from the initiators public key, hashes the result and arrives at the secret session key
Enter peer's public key: DDJICJJFHHAIHFGBHEJIBEHAJHEBEFCIAIJECDIDBHFEBIHBFFJBAGGHJBAIAACBJDJBDEDFAACGGFACHIJGAFJJDAFJDAJFHAFJGEIGIJJDBBHHAEGDDGAFEFDDDBJFJGIACBHBCCAAAAIECAEGAHGJFGGADBCDEJGBGAIGFHDIDCDIFJCCJJFCDEAIDJEBAHHAGBBJHFDEJICEJCDEGFGEHCHGCBHCCHBGEEEHBBAHEGGDIGECDHGDCEHDABJABCBIBGDBHCFAIICDHCGJGAAFBEJIDECEHACGAJDAEBDJBBAFAJC
Secret Session key: QYPMITUSMHCYCZEC