博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栅栏密码
阅读量:5158 次
发布时间:2019-06-13

本文共 901 字,大约阅读时间需要 3 分钟。

原理

所谓栅栏密码,就是把明文分成N个组,然后取出每组的第一个,每组的第二个。。接着按顺序排列得出密文。若每个组里有2两个元素的话就叫2栏栅栏密码。

案例

就比如明文为The girl is beautiful,按照2栏栅栏密码的步骤就需要将这个字符串分成9个组(明文中的空格不计数),9个组分别如下: 

Th eg ir li sb ea ut if ul 

将每个组的第一个元素提出来,Teilseuiu 

将每个组的第二个元素提出来,hgribatfl 
最后按照顺序排列的密文:Teilseuiuhgribatfl,这种情况是分为两组的。自然这个组数就需要自己跑一波了。

练习题

一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏… 

tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.

别管TMD什么组数,直接脚本就是一把梭!

#!/usr/bin/env python# -*- coding: utf_8 -*-e = raw_input('请输入要解密的字符串\n')elen = len(e)field=[]for i in range(2,elen):            if(elen%i==0):                field.append(i)for f in field:    b = elen / f    result = {x:'' for x in range(b)}    for i in range(elen):        a = i % b;        result.update({a:result[a] + e[i]})    d = ''    for i in range(b):        d = d + result[i]    print '分为\t'+str(f)+'\t'+'栏时,解密结果为:  '+d

 

 

转载于:https://www.cnblogs.com/nul1/p/9588863.html

你可能感兴趣的文章
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
对Vue为什么不支持IE8的解释之一
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
求出斐波那契数组
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>