仿射密码技术:

(加法密码+乘法密码)

(可先参见加法密码与乘法密码原理)


C= Ek(m)=(k1 m+k2) mod n , K1,K2∈Zn ,gcd(k1,n)=1
M= Dk(c)=k3(c- k2) mod n(其中k3为k1逆元)
(1)0<k1<n
(2)k1与n互素,即要满足gcd(k1, n)=1,否则不存在模逆元,不能正确解密
所以即满足乘法密码技术的要求,又满足加法密码的要求,如复合函数一般
K1 K2为密钥。当K1=0时,仿射密码即为乘法密码技术,当K1=1时,即为移位替换密码(加法密码)

乘法密码的密码空间大小是φ(n),φ(n)是欧拉函数。
当n为26字母,则与26互素的数是1、3、5、7、9、11、15、17、19、21、23、25,即φ(n)=12 因此乘法密码的密钥空间为12。
注意:K1=1时 加密变换为恒等变换(即无变化)

测试案例如下:

import java.util.ArrayList;
import java.util.Scanner;

public class 仿射密码技术 {

public static int x=0,y=0;
public static ArrayList<Integer> SecretPlace=new ArrayList();
public static int gcd(int a,int b){
return b>0?gcd(b,a%b):a;
}

仿射密码(加法密码+乘法密码)相关推荐

  1. c++、python实现置换密码(栅栏技术,列置换)、替代密码(加法密码(Caesar密码),乘法密码)

    置换密码 代码如下: #置换密码 a = input('请输入明文:') print("逆序后的密文为:",a[::-1]) 结果如图: 代码如下: #栅栏技术(栏数为7) a = ...

  2. 【乘法密码】根据乘法密码的加密函数求解密密钥

    乘法密码的加密函数为 c = a × m ( m o d n ) c=a\times m\ (\mathrm{mod}\ n) c=a×m (mod n),其中 a a a和 n n n互质, m m ...

  3. 密码学基础(二)单表---置换密码 凯撒密码 棋盘密码 乘法密码 仿射密码 多表---vigenere方阵

    1古典密码 (1)置换密码 明文字母重新排列,字母本身不变,但是位置发生变化(倒序或者按照按照数组排列后以行或列重新组合) (2)代替密码 分为单表代替密码和多表代替密码 单表代替密码中代表性的 凯撒 ...

  4. 扩展欧几里得算法求逆元---乘法密码

    欧几里得算法 背景知识: 欧几里得算法:又叫做辗转相除法,用来求两个数的最大公约数.通过辗转相除,当余数为0的时候,最后的除数就是两个数的最大公约数. 例如:求20和11的最大公约数 每次将除数作为下 ...

  5. 密码学——乘法密码实现

    乘法密码 简介:实现了乘法密码的加密和解密,能够通过功能3输入加密密钥,得到解密密钥.但是具有局限性,只支持26位英文字母.目的是为了体验乘法密码,所有程序的可靠性不做要求. #include < ...

  6. 有趣的密码学介绍~古典密码之凯撒密码来咯~

    游说万乘苦不早,著鞭跨马涉远道.仰天大笑出门去,我辈岂是蓬蒿人! 文章目录 前言 正文 古典密码 一.古典密码概述介绍 1.置换密码 2.代换密码 二.古典密码分类介绍 1.置换密码 2.编辑本段代换 ...

  7. 古典密码(单表密码,维吉尼亚密码,普莱费尔密码,一次一密)

    古典密码 1.单表密码(仿射加密) 仿射加密变化是:y=ax+b 算法: 仿射密码是一种表单代换密码,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母. A B C ...

  8. 怎么知道 网站是否直接明文保存密码_忘记账号密码 浏览器记住了 怎么找回密码?...

    对于健忘又没有使用保存密码插件的习惯的人来说,忘记密码是经常的事情. 而大家知道的也就是通过网站的找回密码选项,通过邮箱,手机号,人工等方式找回密码,但是如果是个小网站,没有找回的功能,或者当时是随便 ...

  9. mysql本地服务器密码,mysql如何修改密码

    今天利用SQLyog连接本地服务器,连接不上,一直报2003的错误,这个错误是由于本地mysql没有启动,经过一番倒腾,服务开启,但连接时再一次报1045Access denied for user ...

最新文章

  1. iostext添加点击事件_iOS给UILabel添加点击事件
  2. 国内最优秀的Leangoo敏捷项目协作工具
  3. WINDOWS SERVER 2003从入门到精通之使用证书在WEB服务器上设置SSL(下)
  4. c++ 使用vs2010调用 win32api
  5. Flying to the Mars
  6. 变量在内存中的值[c][code]
  7. ddd 访问权限_基于DDD的微服务设计和开发实战
  8. 云图说|华为云自研云数据库GaussDB NoSQL,兼容多款NoSQL接口的数据库服务
  9. html强制文档模式ie8,html5 – IE9:强制IE9浏览器模式和文档模式
  10. Unix操作系统发展历史
  11. 达梦数据库DCA培训总结
  12. 【学习OpenCV4】OpenCV4入门介绍
  13. The RFB Protocol(RFB协议)简介
  14. Redis集群cluster:增加删除(伸缩)节点操作步骤
  15. Python基本数据类型之数字
  16. 计算机视觉中的transformer模型创新思路总结
  17. 试算平衡表两种方法比较
  18. 谷歌邮箱lmap服务器填什么_SMTP和IMAP是什么?
  19. 【FPGA入门教程】(六)时序逻辑电路设计
  20. 批量去除PDF的水印(完全免费)

热门文章

  1. newifi路由器 php,newifi新路由如何设置宽带拨号上网PPPoE
  2. 夏天就要到了,一起找个游泳池清凉一夏
  3. 抓取app服务器证书,APP爬虫-双向认证抓包的两种方法
  4. Python框架之flask
  5. MySQL创建函数和存储过程,批量插入大数据
  6. Matlab智能算法chap1
  7. MATLAB--运用傅里叶变换对信号进行简单的滤波
  8. python爬虫教程:基于python框架Scrapy爬取自己的博客内容过程详解
  9. 机器学习10—多元线性回归模型
  10. 升级更新 Windows10