经典密码

secretp的Python项目详细描述


Go to PyPiGo to PyPiGo to PyPiRead the DocsGo to PyPiGo to GithubGo to Travis

下载:

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(UpperCaseNoSpaceSaveCase等),因此这是进行加密/解密的首选方法:

#!/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
'''

维护人员

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpringBootHibernate5忽略@Table和@Column   java readLine是如何工作的?   java除了Oracle的JVM(windows)之外,还有什么BSD许可的替代方案吗?   javascript处理程序执行导致异常:所需的MultipartFile参数“file”不存在   java如何检查url是否与标识符匹配?   java在对象创建之后实现一个接口   java安卓:如何将github库放入项目中   java如何制作自定义文本组件?   如何在java中更新属性文件   java Hibernate持久映射   JavaSpring批处理如何从postgres读取数据,然后在步骤中写入数据   java应用程序已在Android Emulator Eclipse中停止   java找不到参数[org.jetbrains.kotlin:kotlinstdlibjdk7:1.3.50]的方法实现()   java AWS DynamoDB如何从数据库中获取只有一个字段的对象   在使用ajax进行表单提交时,java无法阻止默认表单提交   集合如何在Java中定义基于两个变量进行比较的比较器   多线程基准测试Java中的多线程集合   java如何通过浏览器运行终端程序?