索引

  • 算法基础
  • 模灰度级加密算法
  • Matlab代码(以灰度级为 2 8 = 256 {{2}^{8}}=256 28=256的图像为例)

算法基础

  给定数 p p p和数 G G G,考虑同余式
p x ≡ 1 m o d G px\equiv 1\text{ }\bmod G px≡1 modG
当 gcd ⁡ ( p , G ) ∣ 1 \left. \gcd \left( p,G \right) \right|1 gcd(p,G)∣1即 gcd ⁡ ( p , G ) = 1 \gcd \left( p,G \right)=1 gcd(p,G)=1时同余式有解,记该解为
x ≡ q m o d G x\equiv q\text{ }\bmod G x≡q modG
∀ a ∈ Z \forall a\in \mathbb{Z} ∀a∈Z,记 p a m o d G = b pa\text{ }\bmod G=b pa modG=b,即有
p a ≡ b m o d G pa\equiv b\text{ }\bmod G pa≡b modG
则有
q b ≡ q ( p a ) = ( p q ) a ≡ a m o d G qb\equiv q\left( pa \right)=\left( pq \right)a\equiv a\text{ }\bmod G qb≡q(pa)=(pq)a≡a modG

模灰度级加密算法

  给定一幅尺寸为 M × N M\times N M×N(单位:像素)的图像 I I I,确定其灰度级数 G G G(通常是 2 2 2的 n n n次幂,例如 2 2 2的 8 8 8次幂,即256)。

  密钥: p ∈ Z p \in \mathbb{Z} p∈Z,满足 gcd ⁡ ( p , G ) = 1 \gcd \left( p,G \right)=1 gcd(p,G)=1

  解钥: q ∈ Z q \in \mathbb{Z} q∈Z,通过解 p q ≡ 1 m o d G pq\equiv 1\text{ }\bmod G pq≡1 modG求出。

加密过程

  1. 将明文 I I I加密为密文 I 1 {{I}_{1}} I1​, I 1 {{I}_{1}} I1​也是一个尺寸为 M × N M\times N M×N,灰度级为 G G G的图像,且每个像素处的灰度值 I 1 ( i , j ) {{I}_{1}}\left( i,j \right) I1​(i,j)为
    I 1 ( i , j ) = I ( i , j ) × p m o d G , i = 0 , 1 , ⋯ , M − 1 , j = 0 , 1 , ⋯ , N − 1 {{I}_{1}}\left( i,j \right)=I\left( i,j \right)\times p\text{ }\bmod G,\text{ }i=0,1,\cdots ,M-1,\text{ }j=0,1,\cdots ,N-1 I1​(i,j)=I(i,j)×p modG, i=0,1,⋯,M−1, j=0,1,⋯,N−1

  2. 解密密文 I 1 {{I}_{1}} I1​得到明文 I I I,每个像素处的灰度值 I ( i , j ) I\left( i,j \right) I(i,j)为
    I ( i , j ) = I 1 ( i , j ) × q m o d G , i = 0 , 1 , ⋯ , M − 1 , j = 0 , 1 , ⋯ , N − 1 I\left( i,j \right)={{I}_{1}}\left( i,j \right)\times q\text{ }\bmod G,\text{ }i=0,1,\cdots ,M-1,\text{ }j=0,1,\cdots ,N-1 I(i,j)=I1​(i,j)×q modG, i=0,1,⋯,M−1, j=0,1,⋯,N−1

  由上面的步骤可知,这是一种在图像空间域上的加密,是一种仅改变像素灰度值的加密,解密图像与原图没有差异。由于密钥和解钥一般不相等,因此也是一种公钥加密

Matlab代码(以灰度级为 2 8 = 256 {{2}^{8}}=256 28=256的图像为例)

I = imread('待读入的图像路径+名称');  % 读入图像
G = 256;  % 确定灰度级,默认图像是8位的,即灰度级是2^8=256
p = 5;  % 确定密钥% 检验密钥p与灰度级G的最大公因数是否为1
if gcd(p, G) ~= 1error('密钥p与灰度级G的最大公因数不是1,不存在解钥');
end% 展示原图像
figure, imshow(I);% 将图像I进行加密得到密文I1, 并可视化
I1 = mod( double(I) * p, G );
figure, imshow( uint8(I1) );% 利用简单的循环迭代找出解钥q
% 因为gcd(p, 256) = 1, 因此p一定是奇数。
% 又由于pq mod256 = 1, 因此q也一定是奇数。
q = 1;
while mod( p*q, G ) ~= 1q = q + 2;
end% 将密文I1解密得到I2, 并可视化
I2 = mod( I1 * q, G );
figure, imshow( uint8(I2) );% 比较原图像I 与 解密得到的I2 是否一致(即该算法是否有损)
% 使用isequal(), 该函数返回真值当且仅当两个矩阵相同索引处的值均相等
if isequal( double(I), I2 )disp('解密得到的图像与原图像一致');
elsedisp('解密得到的图像与原图像不一致');
end

图像加密之灰度加密:基于 密钥 × 解钥 ≡ 1 mod 灰度级 的一轮加密算法原理和步骤相关推荐

  1. http协议与https协议+UDP协议和TCP协议+WebSocket协议下服务端主动去发送信息+对称加密与非对称加密+get和post请求方式区别详解+浏览器内核以及jsj解析引擎

    TCP和UDP协议是TCP/IP协议的核心. 在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Control Protocol).UDP(用户数据报协议,User Data P ...

  2. 【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS

    此文章转载来源于http://blog.csdn.net/tenfyguo/article/details/40958727点击打开链接 1.  HTTPS 1.1. 什么是HTTPS HTTPS(H ...

  3. Android加密之全盘加密详解

    前言 Android 的安全性问题一直备受关注,Google 在 Android 系统的安全方面也是一直没有停止过更新,努力做到更加安全的手机移动操作系统. 在 Android 的安全性方面,有很多模 ...

  4. 详解js对称加密和非对称加密

    详解js对称加密和非对称加密 https保证数据在传输过程中不被窃取和篡改,从而保证传输安全 1.加密 对称加密:产生一个密钥,可以用其加密,可以用其加密,也可以用其加解密. 这个密钥可以是任何东西, ...

  5. PHP加密函数与解密函数详解

    本篇文章主要为大家详细介绍了PHP中的加密函数与解密函数 Php常用的加密函数有 MD5加密(不可逆).Crypt加密(不可逆).Sha1加密(不可逆).Urlencode加密(可逆) base64编 ...

  6. 对称加密和非对称加密详解

    目录 一.对称加密(Symmetric Cryptography) 二.非对称加密(Asymmetric Cryptography) 三.总结 一.对称加密(Symmetric Cryptograph ...

  7. 常用的安全算法-数字摘要、对称加密、非对称加密详解

    本文仅介绍摘要算法.对称加密算法.非对称加密算法的使用场景和使用方法. 1.数字摘要 说明:数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数.数字摘要 ...

  8. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS

    一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...

  9. 【上】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS

    此文章转载来源于http://blog.csdn.net/tenfyguo/article/details/40922813点击打开链接 一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码 ...

最新文章

  1. PCDN实现flash无延时直播的技术原理与优点
  2. 17个改变世界的数学公式,马斯克点赞
  3. PHP正则表达式的使用
  4. 探究php底层运行机制
  5. mysql mariadb nodejs_Nodejs中使用mariadb库连接MySQL数据库
  6. CMOS图像传感器——2021产品选谈
  7. java多线程并行执行命令_深入理解Java多线程与并发框(第④篇)——重排序、屏障指令、as-if-serial规则...
  8. 大数据认知计算在内容安全管控中的应用
  9. Gdevops广州站:大咖齐聚,从事运维和数据库的你不能错过!
  10. js之prototype、__proto__与constructor(图解)以及原型链
  11. 在java语言中下列语句正确的是_java考试习题及答案
  12. python爬虫---代理、Cookie、模拟登录古诗文网
  13. 概率论与数理统计——总结
  14. r语言中残差与回归值的残差图_R语言基础-数据分析及常见数据分析方法
  15. 在Linux上测试网络的命令之3----基础网络命令(netstat\ss)
  16. oracle报错1034,oracle数据库登陆报错ora-1034
  17. kelvin模型蠕变方程_机织建筑膜材料的广义Kelvin-Voigt蠕变模型
  18. [高通SDM450][Android9.0]刷机后RTC时钟不生效问题
  19. html中设置字体字型,html中 如何在font中设置字体样式(粗体斜体等)
  20. java 设置日期的格式_java设置日期格式

热门文章

  1. TPCH生成数据导入Postgres数据库
  2. 【Unity】基于SpriteRenderer的残影/幻影
  3. 大话设计模式之爱你一万年:第二十章 行为模式:迭代器模式:让遍历标准化:1. 迭代器模式
  4. 在鸿蒙开发板上使用MQTT协议、OneNET实现第一个物联网项目
  5. 吊打BERT、GPT、DALL·E,跨模态榜单新霸主诞生!
  6. 【PCBA方案开发设计】电动打气泵产品方案
  7. 水星mw310r虚拟服务器,水星MW310RE扩展成功后如何查看IP地址?
  8. 乐观锁和悲观锁的理解及如何实现,乐观锁的实现方式。看完你就明白了!
  9. matlab怎么对图片实行伽马变换,matlab灰阶变换函数imadjust和stretchlim的c++实现
  10. javax.mail使用