仿射密码 affine

2023-11-07

参考链接:https://www.cnblogs.com/0yst3r-2046/p/12172757.html

仿射加密法

在仿射加密法中,字母表的字母被赋予一个数字,例如 a=0,b=1,c=2…z=25 。仿射加密法的密钥为0-25直接的数字对。

仿射加密法与单码加密法没什么不同,因为明文的每个字母分别只映射到一个密文字母。

仿射密码的加密算法就是一个线性变换,即对任意的明文字符x,对应的密文字符为 ,其中,a,b∈,且要求gcd(a,26)=1,函数e(x)称为仿射加密函数。

注意:

注1. 仿射加密函数要求gcd(a,26)=1,即要求a和26互素,否则就不是一个单射函数。

注2. 从仿射加密函数的表达式易知,当a=1,b=3时,这种仿射密码就是著名的凯撒密码。

注3. 在求解仿射解密函数时,需要求a在上的乘法逆元这可由扩展欧几里得算法求解,下表列出了在上所有与26互素元素的乘法逆元:

举个列子:

假设e(x)为密文,x为明文。

设仿射加密函数是

由上表知:所以相应的仿射解密函数是

若加密明文是  sorcery  ,首先把明文每个字母转换为数字 18,14,17,2,4,17,24 。然后对明文进行加密,这里以第一个字母s为例:

e(x)=(11*18+6)mod 26

e(x)=204 mod 26

e(x)=22 

对照下表:

python代码:

flag = "szzyfimhyzd"
flaglist = []
for i in flag:
    flaglist.append(ord(i)-97)
flags = ""
for i in flaglist:
    for j in range(0,26):
        c = (17 * j - 8) % 26
        if(c == i):
            flags += chr(j+97)
print(flags)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仿射密码 affine 的相关文章

随机推荐

  • Spring Boot 性能优化几点

    点击下方 IT牧场 选择 设为星标 程序员大目 IT牧场公众号 BAT 技术专家分享开发 架构 运维相关干货 159篇原创内容 公众号 文章来源 http a nxw so 1biCvy 目录 异步执行 增加内嵌 Tomcat 的最大连接数
  • Bert的NSP任务的loss原理

    Bert的NSP任务是预测上句和下句的关系 对一个句子的表征可以用CLS的embedding bert的NSP任务 NSP 是一个预测两段文本是否在原文本中连续出现的二元分类损失 NSP 是一种二进制分类损失 用于预测原始文本中是否有两个片
  • 彻底理解Linux下动态替换.so的方法

    0x00 背景 hdfs增加了一个native方法 打成了libhadoop so这个动态库 需要分发到线上的各个Datanode上以便升级 在灰度分发到datanode时遇到了可复现的问题 即datanode进程肯定会core dump
  • scipy.sparse稀疏矩阵内积点乘--效率优化!

    在使用scipy和numpy做数据计算时 感觉运行速度较慢 但是程序已经到了使用多数计算使用内积运算地步了 真的不知道该如何优化 如果能够优化下内积运算该有多好啊 奔着这个目标 希望能够写一篇文章盘点各种内积优化方法 也算是贡献自己的微薄之
  • Java RMI 解析

    1 什么是RMI Java RMI 即 远程方法调用 Remote Method Invocation 一种用于实现远程过程调用 RPC Remote procedure call 的Java API 能直接传输序列化后的Java对象和分布
  • GD32替换STM32后 写片上闪存(flash)失败的解决方法

    目录 型号 问题 解决办法 下载gd的fmc操作库 修改fmc文件 使用 擦除一页 写一页 型号 使用的GD32C103CB等引脚替换STM32F103CB 问题 使用hal库的flash操作接口 片上flash可以正常擦除 但是无法写入
  • Flash Player 10 中的RTMFP协议(实现P2P技术)

    RTMFP是Adobe公司开发的一套新的通信协议 该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信 用Adobe AIR框架开发的程序也可以用此协议来发布直播 实时信息 通过使用RTMFP 那些以来直播 实时通
  • 03多线程之间通讯

    线程之间的通信 一 为什么要线程通信 1 多个线程并发执行时 在默认情况下CPU是随机切换线程的 当我们需要多个线程来共同完成一件任务 并且我们希望他们有规律的执行 那么多线程之间需要一些协调通信 以此来帮我们达到多线程共同操作一份数据 2
  • linux内存文件系统

    写文件时 太耗内存的话 可以使用dma拷贝 或者使用内存文件系统的方式 但首先要搞清楚一点 正常的文件操作 多久会真正保存到磁盘中去呢 参考 浅谈Linux系统写磁盘机制 http blog sina com cn s blog 96757
  • mybatis通用mapper的Example查询

    mybatis的通用mapper 多用于单表查询 接口内部为我们提供了单表查询的基础查询语法 可以极大地帮助我们简化编程 接下来让我们动手试一试 我建的是springboot项目 先导依赖
  • 词云下载jieba成功后仍然报错

    下载jieba终端 pip install i https pypi tuna tsinghua edu cn simple jieba 成功下载后仍然报错 TransposedFont object has no attribute ge
  • 牛顿-拉夫逊法潮流计算matlab程序,牛顿—拉夫逊法潮流计算MATLAB程序.doc

    牛顿 拉夫逊法潮流计算程序By Yuluo 牛顿 拉夫逊法进行潮流计算 n input 请输入节点数 n n1 input 请输入支路数 n1 isb input 请输入平衡母线节点号 isb pr input 请输入误差精度 pr B1
  • python之struct详解

    python之struct详解 醉小义的博客 CSDN博客 python struct 尊重原创
  • Unity中,在按钮的处理事件中,显示UI(Panel)的一些问题

    问题来源 自己遇到的 32条消息 Unity SetActive True 滞后严重 游戏 CSDN问答 简单概括就是 点击按钮 开始处理某个事件 这个事件需要花费较长时间 我的想法是加入一个加载中界面 方便告知用户当前程序没有卡住 在完成
  • kodi刮削器 中文_手把手教你用Kodi,搭建最强私人娱乐/学习中心!(小白篇)...

    喜欢本篇内容请给我们点个在看 什么是KODI 简单的说 Kodi 就是一个功能强大且免费的媒体播放器 支持全平台 如Windows Linux iOS Android Xbox 以及树莓派等 可播放电影 电视剧 音乐 电视直播 电台等等 特
  • JS逆向解析---某知名小说网站内容加密

    该小说网站的全部内容都是经过一个JS的加密 要想爬取这个网站那么将其内容解析是不可避免的 本文将讲解如何对其进行JS的逆向解析 网站 shuqi 随便点开一本书 打开浏览器自带的抓包工具 点击第一个包 但是在这里找不到我们想要的数据 说明不
  • 实现ListView中每行显示进度条,并且各自显示自己的进度

    package com sagaware process list import java util ArrayList import java util HashMap import java util List import java
  • Web2.0网站一些通用业务采用NoSql的解决方案

    首先理解NoSql的划分 Often NoSQL databases are categorized according to the way they store the data and fall under categories su
  • MySQL生产环境高可用架构实战

    分布式技术MongoDB 1 MySQL高可用集群介绍 1 1 数据库主从架构与分库分表 1 2 MySQL主从同步原理 2 动手搭建MySQL主从集群 2 1 基础环境搭建 2 2 安装MySQL服务 2 2 1 初始化MySQL 2 2
  • 仿射密码 affine

    参考链接 https www cnblogs com 0yst3r 2046 p 12172757 html 仿射加密法 在仿射加密法中 字母表的字母被赋予一个数字 例如 a 0 b 1 c 2 z 25 仿射加密法的密钥为0 25直接的数