经典密码
secretp的Python项目详细描述
下载:
https://pypi.org/project/secretpy
文档:
https://secretpy.readthedocs.io
源代码和开发:
https://github.com/tigertv/secretpy
说明
SecretPy是一个加密Python包它使用以下经典密码算法:
- adfgx,adfgvx
- 仿射
- 阿特巴什
- 自动键
- 集市
- 博福特
- 双歧
- 凯撒,凯撒进步
- 柱状移位
- 关键字
- 虚无主义者
- 简单替换
- 游乐场,2平方(双游乐场),3平方,4平方
- 多毛
- 旋转13、旋转5、旋转18、旋转47
- 三裂
- 维克
- 维格纳、格罗斯菲尔德、波塔
- 曲折(围栏)
安装
要安装此库,可以使用pip:
pip install secretpy
或者,您可以使用repo的克隆和make:
git clone https://github.com/tigertv/secretpy
cd secretpy
make install
用法
直接方式
密码类只能对字母表中存在的字母进行加密,而且它们没有状态。
#!/usr/bin/python# -*- encoding: utf-8 -*-fromsecretpyimportCaesarfromsecretpyimportalphabetalphabet=alphabet.GERMANplaintext=u"thequickbrownfoxjumpsoverthelazydog"key=3cipher=Caesar()print(plaintext)enc=cipher.encrypt(plaintext,key,alphabet)print(enc)dec=cipher.decrypt(enc,key,alphabet)print(dec)print('=====================================')print(plaintext)# use default english alphabetenc=cipher.encrypt(plaintext,key)print(enc)dec=cipher.decrypt(enc,key)print(dec)''' Output: thequickbrownfoxjumpsoverthelazydog wkhtxlfneurzqirämxpsvryhuwkhodüögrj thequickbrownfoxjumpsoverthelazydog ===================================== thequickbrownfoxjumpsoverthelazydog wkhtxlfneurzqiramxpsvryhuwkhodcbgrj thequickbrownfoxjumpsoverthelazydog '''
密码机
CryptMachine保存状态。有字母表,钥匙和密码,可以随时更换。 在前一个例子中,明文只包含字母表中的字母,而小写字母中没有空格。 要更改行为,可以使用CryptMachine和decorators(UpperCase、NoSpace、SaveCase等),因此这是进行加密/解密的首选方法:
#!/usr/bin/python# -*- encoding: utf-8 -*-fromsecretpyimportAtbashfromsecretpyimportCaesarfromsecretpyimportCryptMachinefromsecretpy.cmdecoratorsimport*fromsecretpyimportalphabetdefencdec(machine,plaintext):print(plaintext)enc=machine.encrypt(plaintext)print(enc)dec=machine.decrypt(enc)print(dec)print("-----------------------------------")plaintext=u"thequickbrownfoxjumpsoverthelazydog"key=3cipher=Caesar()cm=CryptMachine(cipher,key)encdec(cm,plaintext)cm.set_alphabet(alphabet.GERMAN)encdec(cm,plaintext)cm=SaveSpaces(cm)cm.set_key(9)plaintext=u"the quick brown fox jumps over the lazy dog"encdec(cm,plaintext)cm=NoSpaces(UpperCase(cm))cm.set_cipher(Atbash())plaintext=u"Achtung Minen"encdec(cm,plaintext)''' Output: thequickbrownfoxjumpsoverthelazydog wkhtxlfneurzqiramxpsvryhuwkhodcbgrj thequickbrownfoxjumpsoverthelazydog ----------------------------------- thequickbrownfoxjumpsoverthelazydog wkhtxlfneurzqirämxpsvryhuwkhodüögrj thequickbrownfoxjumpsoverthelazydog ----------------------------------- the quick brown fox jumps over the lazy dog üqn zßrlt käxbw oxc sßvyö xanä üqn ujed mxp the quick brown fox jumps over the lazy dog ----------------------------------- Achtung Minen ßÖWKJQXRVQZQ ACHTUNGMINEN ----------------------------------- '''
复合机
组合多个密码以获得更复杂的密码,可以使用CompositeMachine:
#!/usr/bin/python# -*- encoding: utf-8 -*-fromsecretpyimportRot13fromsecretpyimportCaesarfromsecretpyimportCryptMachinefromsecretpyimportCompositeMachinefromsecretpy.cmdecoratorsimport*defencdec(machine,plaintext):print("=======================================")print(plaintext)enc=machine.encrypt(plaintext)print(enc)dec=machine.decrypt(enc)print(dec)key=5plaintext=u"Dog jumps four times and cat six times"print(plaintext)cm1=SaveSpaces(SaveCase(CryptMachine(Caesar(),key)))enc=cm1.encrypt(plaintext)print(enc)cm2=SaveSpaces(SaveCase(CryptMachine(Rot13())))enc=cm2.encrypt(enc)print(enc)print("=======================================")cm=CompositeMachine(cm1)cm.add_machines(cm2)enc=cm.encrypt(plaintext)print(enc)encdec(cm,plaintext)cm.add_machines(cm1,cm2)encdec(cm,plaintext)''' Output: Dog jumps four times and cat six times Itl ozrux ktzw ynrjx fsi hfy xnc ynrjx Vgy bmehk xgmj laewk sfv usl kap laewk ======================================= Vgy bmehk xgmj laewk sfv usl kap laewk ======================================= Dog jumps four times and cat six times Vgy bmehk xgmj laewk sfv usl kap laewk Dog jumps four times and cat six times ======================================= Dog jumps four times and cat six times Nyq tewzc pyeb dswoc kxn mkd csh dswoc Dog jumps four times and cat six times '''
维护人员
- @tigertv(最大维特罗夫)