Skip to content

Instantly share code, notes, and snippets.

@jacobh
Created August 9, 2012 11:27
Show Gist options
  • Save jacobh/3303406 to your computer and use it in GitHub Desktop.
Save jacobh/3303406 to your computer and use it in GitHub Desktop.
from base64 import b64encode
from hashlib import sha256
from random import random
def random_uppercase_string():
raw = b64encode( sha256( str(random() ) ).digest() ).upper()
string = ''
for letter in raw:
if letter.isalpha():
string += letter
return string
def generate_invite_code():
code = ''
while len(code) < 25:
code += random_uppercase_string()
out = ''
for (i, letter) in enumerate(code[:25]):
out += letter
if i in (4, 9, 14, 19):
out += '-'
return out
In [7]: for i in range(100):
...: print generate_invite_code()
...:
QQRKQ-PDWUZ-BYZWN-YXONW-LZMNL
RMQUI-OFDZU-KSZVS-NISXJ-NMIBU
QZYPA-HLZFR-NHGKZ-SVKWC-WXPIQ
BVRVW-SXOBB-WUGMN-BVQMJ-OGXOX
IYHWP-FYNPD-WKDYM-YSFQM-WHTGG
METZW-IBXVT-YODFF-XICUM-MRQUM
LSQOX-FITXX-DLOIT-UWFHQ-VWSEK
AVZKA-VHSOG-YSJQK-KCWCP-GCAPH
YTXDA-JESJY-JQAWX-IAYKY-QSWUS
OUUFW-BFHSR-CXYTD-BKREZ-JYDVX
BEXKP-HTJXI-HLMFT-MIDMJ-PPLGX
CBOHW-BLXHT-RJBQW-VGCYB-URZGW
CQOQV-BOPKW-LBPOR-XFFAM-FVCMV
XMOPP-PYSWR-ZVXFP-BKEJG-GLGQN
HXAPT-TQVTH-TELXA-RSKIU-NOKXC
NYQIQ-JCEFM-SKPFO-QFIRV-GVOFR
URVDQ-ZYLCI-QUABH-RYKOU-DFTPW
SXIBZ-VFFDF-ZYAWW-ULPOO-QNWPO
QONGQ-VEXCW-CFSIZ-OGQXT-CDLXE
MAYEZ-PABHH-BTBOZ-NOUWC-LYKNR
YISBT-WZGTK-AEFDL-GUHPB-JOQMX
WCPIK-JNYLU-YMIUY-YCFOI-LVDPB
ZNQIX-TUPYL-VXFTP-OUZZW-RABLC
GEOQJ-EWYPB-FHHVB-CHRVM-ECJEX
XRVQL-NFYAK-JERGX-SCQJD-IOVZQ
ADLRX-AVLQM-GGKWH-SXHCV-IFHEA
HUVDF-CIOPG-VVWAU-VENGC-SEELA
UUSYC-OSVHA-FIRMC-YPIMI-ZQLEC
QWEEE-JKOSZ-SEVPT-MDZIG-GBRYT
JUDMB-QRIZZ-OVXWJ-ESRTG-ZUDAQ
EXXCZ-GJGID-SXNCZ-ZKZEK-QJGZS
SPHUY-SUBBY-KTUPR-PIOUV-GTLQW
AGSQU-XKQCI-CCQYS-AFMQU-QUSUY
KXSCN-YHBCZ-GOYKS-DJVPU-XHNQX
NNWLI-NLPBY-KHEQF-UVYMS-XPEQH
TQDLR-UXWRH-EDMUB-VENQP-AFNOC
NITQT-KGVSX-MQOQX-BBMBC-ABMYB
WQLUZ-SDJSR-AGJIJ-EMXVH-WVGMK
MEGTE-CGOHC-YIAIM-PEHSZ-QPTGA
HHCUW-XRPYT-CKZYW-UIFFI-NEDQW
DKBUG-OXUSA-OBYGO-OWERB-RKCMK
SGRBS-ZXSSG-KOZBJ-AJMEB-YZYRW
UJRNY-UWFGP-MBRYL-EZFNN-QVZJU
CHJWL-OSWHD-JVOMA-PDNSJ-FRZIV
BYTWZ-NKKCM-YAVYO-REVOV-NOIID
NGFKP-DZZWD-ZJIIG-QOHNE-RWFWK
TXEWA-BYSZU-PZFTV-YCAYV-CHHHU
DCGIX-HBUPR-QHJPO-GDCCJ-GDCSI
OZDHG-WCERW-VKIXV-VKIXX-VKTTO
WZASX-EVUPN-DIQTH-MHQOB-NVBMN
EETTD-NQAZB-DQLGW-CYCJZ-TOVGW
LUHHJ-SJKIP-URRYB-URYPR-MKZOY
UQOOJ-KWINB-DYDUI-XMTCE-RUELT
VKNIZ-THBOY-QORIA-CVMTG-CVAQH
OUNFX-XLKAK-ZXDGM-QCIDM-SWRPU
RFNBU-JIUVT-CNMXF-KOBBR-WGKLZ
TZMQP-UOGRE-CBSKG-DAJGF-JPBIP
PTLHU-JOABU-MQLYH-VXKVZ-MDJOL
JEUMU-ABDOI-TAQSP-XWNDK-OTALL
FVLWM-BTUOT-QJQTT-LALPU-ONIPD
NROIT-PNWDU-FQDOQ-PWRCQ-ZAGSP
EBMXX-BPCFS-CAJVX-PLBUZ-GOFHD
GTSVN-XTSWN-WEMLC-AEQZZ-NKKHJ
CCUDS-QESVY-LHKMR-FBYWI-TOSDH
IVZAN-ZMSGK-NQLVI-GTAZR-OKHFP
CKVFH-KVFPS-QZMZF-NSYOH-KGKLG
PWELJ-BQHMN-IGGRF-ZJPYA-ZRARN
FALOW-XGRKL-ODZUE-GOJPO-PSKXX
PVKHR-YFWRL-CABNK-TOEFV-VNCNA
UWCGG-CNUOG-KVWRP-ERDMB-MAAXH
XWYVS-PGLAP-RZGNB-XQASJ-GJADO
HOAMK-ZDNZD-VAXJT-FSFLE-UBWSF
BFZPW-OOCXY-RXDRV-HLGMY-UPMEZ
UXFJO-KFFKY-RJOYY-YHBRF-HATMA
TXHPE-IJJLL-CWVBD-MKLFP-WYXGJ
QWRFN-CLLXD-JVYLX-QVNSM-JKSKZ
OOAHV-SMTJH-OLOQA-WJZCA-OFJJZ
HSRPD-JTVXQ-HUJLS-LUQZX-FTKNE
PHJID-HUVDE-BBQEB-CBMGZ-FQGNG
RPKUU-EUUVZ-YDYXD-CELGS-DQVET
CIRWF-MORWI-RYZQF-YFLNH-ZDHMR
VQXUO-RMDBG-URNMM-YACLT-SFBRX
NHSTS-MNQTX-OJGWO-FNCRE-XSHVE
SISMC-MWKLB-BITOB-JFMAT-PFNHL
CORCN-GQFVI-DDJRN-GVCVW-YHBKC
OTKSV-YYCBN-YOOZF-FUVOB-FHFFE
RQYMF-BUCNG-SWJWL-KXEUY-OOMIE
RJTLN-ZRLYL-HIXAG-FSHMF-HGREJ
NIPSM-KZGYG-NCJLO-QETIP-OHXZM
BUKYD-YUPWV-ECKKI-BUNND-PMTHR
DNIJT-PTASX-ZCPKO-ZQDPB-AKZRC
VYGJS-ALJRT-EHCAK-KYZBU-LTBOZ
TSUWQ-HNVUN-ZPUGQ-SZBKU-OMQPE
AAQQQ-AYQZZ-XXVMV-GXAVU-DFENG
CJDVP-IDDFA-FJASV-NZXUF-STAVG
WZGRR-PLYOP-TMWBK-UVNYQ-PBJSU
VOPHA-KWKQS-ZJSMG-XMPFZ-HSKNB
VRCLI-HUYNJ-YUPAZ-UFAOW-YTCVN
FEQUL-YUIEO-APWNW-REVZT-ZKOPD
URTSA-NNQSV-FZIBD-ARHRL-NKPBJ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment