步骤:

  • 明文根据key转化为数字
  • 数字和明(密)文进行XOR运算(这里是我自己的理解 XOR运算意味着加解密方法是一致的)
  • 数字按组转化为密文

** key一般直接使用ascii二进制和英文的对照表

看了表哥写的代码很是羡慕 于是自己也想写一个试试 按照自己的思路历时接近一个半小时搞出来了

贴上自己的代码:


# coding: utf-8
## Fenham
## _Bonjour_Python3
#
Check_List_2num = {'A':'1000001','B':'1000010','C':'1000011','D':'1000100','E':'1000101','F':'1000110','G':'1000111','H':'1001000','I':'1001001','J':'1001010','K':'1001011','L':'1001100','M':'1001101','N':'1001110','O':'1001111','P':'1010000','Q':'1010001','R':'1010010','S':'1010011','T':'1010100','U':'1010101','V':'1010110','W':'1010111','X':'1011000','Y':'1011001','Z':'1011010'}## key value对调
Check_List_2char = {value:key for key,value in     Check_List_2num.items()}## 转换
def change2num(text):finish = []for i in text:finish.append(Check_List_2num[i])return finish## 分组处理字符
def change2list(text):num = 0str = []while True:str.append(text[num:num+7])num += 7if(num > len(text) - 7):breakreturn str## XOR运算
def XOR(text,key):finish = ''for i in range(0,len(text)):if text[i] == key[i]:finish += '0'else:finish += '1'return finish## 加解密# 读文本文件
input = open('in.txt')
try:text = input.read()
finally:input.close()file = open('key.txt')
try:key = file.read()
finally:file.close()##转换key
key = change2num(key)
key = ''.join(key)## 运算
finish = XOR(text,key)## 转换字母
finish = change2list(finish)
str = ''
for i in finish:str += Check_List_2char[i]
print(str)

学到了几个小知识点 总结一下:

  • Python读写文件

使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。

  file_object = open('thefile.txt')try:all_the_text = file_object.read( )finally:file_object.close( )

注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法

** 读二进制文件

  input = open('data', 'rb')
  • key value对调

dict通过value找key
dict只能通过key找value 要是想通过value找key(在value不重复的前提下)一是可以通过遍历 二是把整个字典反过来生成一个新的dict(或取代原来的)

实现代码:

 Check_List_2char = {value:key for key,value in Check_List_2num.items()}
  • 对字符串进行分组处理:
  def change2list(text):num = 0str = []while True:str.append(text[num:num+7])num += 7if(num > len(text) - 7): ##注意“-7”breakreturn str

费纳姆密码-二进制密码相关推荐

  1. linux 正则 设置密码复杂度,Ubuntu修改密码及密码复杂度策略设置方法

    一.修改密码 1.修改普通用户密码 passwd 先输入当前密码确认,然后输入新的密码修改 2.修改root用户密码 sudo passwd root 默认root用户被禁止登录,如果需要解除限制,修 ...

  2. shell批量创建和删除10个系统帐号密码(密码为随机10位字符串)

    1.添加10个用户和密码,并把账号和密码保存到指定的文件里 # vim create_user.sh #/bin/bash # for jiangjj in {1..10}; do if id use ...

  3. php 挂马 密码123456,admin密码-常用密码加密md5值,123456,admin,admin888

    一 : 常用密码加密md5值,123456,admin,admin888 123456这个经md5算法加密之后是多少? 16位:49ba59abbe56e057 32位:e10adc3949ba59a ...

  4. 登陆工行网上银行报60058017错误及输入正确网银密码提示密码不正确

    文章编号: 000007 - 最后修改:2010年07月28日 - 撰写人: Lander Zhang  适合项目: 通用 标题: 登陆工行网上银行报60058017错误及输入正确网银密码提示密码不正 ...

  5. 凯撒密码pythin密码_凯撒密码术

    凯撒密码pythin密码 Caesar cipher is one of the well-known techniques used for encrypting the data. Althoug ...

  6. laravel 自带的用户登录视图路径_Laravel实现找回密码及密码重置,详细操作

    Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Laravel中的例子,在php中就不介绍了大家都懂的. 忘记密码是应用中常见的场景之一,Laravel5 ...

  7. 机器人门禁控制盒怎么接线方法_RFID门禁系统原理、初始密码、密码修改方法...

    现在,科技进步的速度越来越快,如今就连门锁都使用上了高科技,不知道大家有没有听说过RFID门禁系统,所谓RFID就是Radio Frequency Identification的缩写,即射频识别,可能 ...

  8. java 获取密码框密码,获得Windows下的密码框密码--编程学习网

    获得Windows下的密码框密码,似乎是很多人感兴趣的话题,CSDN上问这类问题的人不计其数--这样看来,老罗也不能免俗啦,今天就让我跟大家探讨一下如何实现这一功能吧.^_^ 我们知道,Windows ...

  9. [C程序设计]请编程序将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。

    用C语言编程序,实现将"China"译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母. 源代码如下: #include <stdio.h> int mai ...

  10. Spring Boot 动态设置数据库密码,密码加密,密码单独处理

    网上好多处理动态密码或密码加密都是用 [ jasypt ]与 阿里的 [ Druid ],但这些都无办法满足大部份的公司的安全要求,很多公司要求密码单独方在服务器上的一个地方,并且文件或者密码字符串被 ...

最新文章

  1. 三分钟教会你搭建动态网络
  2. 干货 | 一致性算法与区块链基础设施建设(附PPT)
  3. 寻找带环的链表的柄长
  4. 知识管理中的矛盾分析
  5. Kafka学习笔记-Java简单操作
  6. Ubuntu使用jupyter notebook +导出PDF
  7. Emlog使用qq头像作为评论头像
  8. php qq邮箱发送邮件报错_PHP实现发送邮件(二)
  9. tomcat集群共享session
  10. XNA实现不停循环的路的效果
  11. 物联网卡有哪几种类型
  12. Ubuntu桌面远程工具
  13. 毕业设计总结篇之终结篇——基于android的创意展示平台(混合app)
  14. kindle如何设置不闪屏_kindle闪屏怎么解决
  15. 2016最新的旅游网站程序CMS系统优点和缺点对比分析
  16. Mac下adb性能测试实战
  17. quartus II使用
  18. 高博-《视觉SLAM十四讲》
  19. ”Could not find tag for codec none in stream #0, codec not currently supported in container”的解决方法
  20. PPT幻灯片中插入Flash动画

热门文章

  1. Unable to import maven project: See logs for details
  2. 测试iphone硬件好坏的软件,iPhone手机如何检测硬件故障,硬件检测必备技能,建议了解一下...
  3. MySQL 字符串和数值比较、字符串与字符串比较
  4. lof基金溢价率php源码,一文读懂LOF基金套利策略 LOF是球友们很喜欢的一类基金,这类基金不仅可以在场内进行高效买卖,而且还可以进行折溢价套利。不过这里面牵扯到很多细节,... - 雪球...
  5. 结节性硬化症会一直病变吗?结节性硬化最晚多大发病?
  6. win11/ win10 C盘扩容教程
  7. 2021年3月最新-李沐-动手学深度学习第二版-中、英文版
  8. 平面广告设计课程中发散思维训练
  9. (DINO) Emerging Properties in Self-Supervised Vision Transformers——自监督ViT的新属性和几点思考
  10. 开发一个安卓App-计算器-改色换肤(完结篇)