精华内容
下载资源
问答
  • 图像加密

    2020-07-01 20:40:21
    图像加密 随着计算机与互联网技术迅速发展,再加上大数据的崛起,网络传输信息量与速度的不断发展,网络传输的信息量和速度令人惊叹。但在传输过程中却很少有人关注到安全问题,为防止在数据传输过程中被他人拦截...

    图像加密

    随着计算机与互联网技术迅速发展,再加上大数据的崛起,网络传输信息量与速度的不断发展,网络传输的信息量和速度令人惊叹。但在传输过程中却很少有人关注到安全问题,为防止在数据传输过程中被他人拦截盗取和破坏,则可以利用混沌系统在图像、音频、视频等方面加密来设计缜密的算法。

     

    少了一个铁钉,掉了一个马掌;

    掉了一个马掌,失了一匹战马;

    失了一匹战马,丢了一个国王;

    丢了一个国王,输了一场战争;

    输了一场战争,亡了一个国家。

    ——西方世界民谣

     

    正如这首西方世界民谣一样,在混沌系统中,对其初始条件进行及其微小的改变,就会发生生翻天覆地的变化。这正是混沌系统对初始条件的敏感依赖性特性,而这一特性应用在密码学上再合适不过了。因此,本文将利用这一特性进行图像加密。

    图像加密的基本原理有两种:置乱和扩散。置乱是将图像各像素点按一定的规则打乱顺序。扩散是通过在元素之间建立扩散路径,使元素沿着该路径向其他元素扩散。每一个元素都沿着指定的路径扩散,从而使元素间相互发生影响。

     

    logstics混沌系统图像加密

    函数系统方程:

                                                                             

    当满足以下条件时:

                                                                                       1<x0<1

                                                                                      3.57<μ<4

    Logistic函数工作于混沌状态。

    图像加密算法:

    Step1:  利用logistics系统生成一维序列。

    Step2: 取其中一段长度满足需加密图片像素width*height的一维序列chaos_seq。

    Step3:  然后将chaos_seq序列从小到大排列,记录下标序列indx_en。

    Step4:  利用序列indx_en生成width*height的矩阵,最后交换排列前后的像素位置进行置乱。

    Step5:  解密过程为加密的逆过程。

    仿真:

                                                                              

                                                                                               原图

                                                                              

     

                                                                                           加密图片

                                                                               

                                                                                          解密图片

    加密效果分析:

                                                                       

                                                                                  加密前像素分布直方图

     

                                                                       

                                                                                  加密后像素分布直方图

    基本上可以完成加密,但是加密的密钥空间较小,而且容易被破解且通过像素直方图可看出加密前后的分布不算均匀,算法任需改进。

    关注以下公众号回复"图像加密"即可获得完整python仿真代码,欢迎关注一起学习!

                                                                         

    展开全文
  • MATLAB图像加密

    2019-11-11 16:59:59
    matlab实现图像加密,图像的本质就是矩阵,通过改变矩阵进行图像加密。密码可长可短,看自己选择。最后实现图像加密
  • Logistic图像加密

    2019-04-12 11:19:22
    基于logistic映射的图像加密算法,有matlab代码,能够运行,加密
  • 图像加密

    2018-10-24 15:41:16
    针对基于低维混沌系统的图像加密算法安全性不高的问题,提出了一种新的基于掺铒光纤激光器(Er-dopedfiberlaser,EDFL)超混沌特性的数字图像加密算法。算法包括置乱和 扩散两个阶段:首先...
  • MATLAB图像加密代码

    2019-04-24 09:48:46
    几种图像加密代码,自己编写的,基于MATLAB图像加密,仅供参考
  • 图像加密技术研究

    2021-02-07 23:39:22
    图像加密技术研究
  • 基于图像相关分解的量子图像加密算法
  • 彩色图像加密算法

    2021-01-29 13:53:36
    针对Arnold变换易被破解,而Lorenz混沌系统置乱的水印图像难以抵抗图像处理攻击的缺点,提出基于Arnold变换和Lorenz混沌系统的彩色图像加密算法,以充分利用了Arnold变换能够较好的分散图像的像素相关性,具有较高置...
  • JPG图像加密

    2013-08-07 03:32:39
    为JPG图像加密的软件,可以为一些重要的图像加密
  • 基于分数傅里叶变换域翻转子图像的图像加密算法,刘正君,,利用分数傅里叶变换域翻转子图像的方法研究一种图像加密算法。在该图像加密算法中,随机的选择一个正方形区域的子图像进行旋转或
  • 数字图像加密

    2015-07-14 08:48:12
    VS2010图像加密、水印程序,供参考,自己开发,希望能给别人写帮助
  • c# 图像加密

    2015-02-03 10:35:52
    实现多种方法的图像加密,以及解密程序,做到保护图片信息
  • 非线性光学图像加密

    2021-02-12 09:30:16
    结合传统的双随机相位编码和非线性光学技术的优点,提出一种基于光折变晶体自相位调制原理的非线性光学图像加密技术,并分析了其稳健性和安全性。该技术通过两个统计独立的随机相位板和两次非线性传播把明文图像加密...
  • LOGISTIC魔方图像加密

    2016-11-21 16:26:50
    logistic 图像加密 解密 matlab 魔方变换
  • 图像加密及隐写

    2018-03-13 02:19:19
    生活中,我们每个人都有一些属于自己的秘密、图片的版权以及一些隐私交流信息,第二,图像加密及隐写的原理,只有掌握了其原理实现起来便是一件很容易的事了。本文主要讲解基于LSB( LSB,Least Significant Bits)的...
  • 图像加密技术是工程技术领域的一项研究热点,该程序利用matlab 编写实现光学图像加密
  • C#图像加密

    2014-03-10 15:30:33
    这是一个简单的图像加密程序,是用C#实现的
  • BasicEncryptor:这是一个基本的图像加密程序,它使用XOR门对图像进行加密
  • 图像信息熵计算,可计算出图像加密后是否是理想的随机图像,用来判断图像加密算法的效果,是评价一个图像加密算法的重要手段。通过输入加密后的图像,可利用该程序直接计算出图像的信息熵。
  • 使用混沌约瑟夫斯矩阵进行图像加密
  • java图像加密

    2017-10-04 17:20:00
    为了保护服务器的图像数据,需要用一个图像加密算法来加密服务器的图像:一开始找了一种基于混沌的图像加密算法,效果还是很理想的,是把矩阵图像上的像素点进行上下左右的混乱;后来发现加密后图像会变大,使用了...

    0 前言

        为了保护服务器的图像数据,需要用一个图像加密算法来加密服务器的图像:一开始找了一种基于混沌的图像加密算法,效果还是很理想的,是把矩阵图像上的像素点进行上下左右的混乱;后来发现加密后图像会变大,使用了简单的异或原理来加密图像;最后把加密算法应用到项目上,需要递归创建于源文件相同的目录结构和加密解密放置。

     

    1 关于图像

        我们平时看到的图像可能都是压缩过的,所以在程序里打开图像矩阵后可能会变大,,然后在加密过程中由于算法的原因图像又会变大,最后在存储的时候又没有对图像进行压缩,没有进行压缩,所以会导致最后图像变大。我把服务器的11G图像用基于混沌算法加密后超出了100G(搞事搞事),所以后来换了直接对二进制异或的算法(简单粗暴ORZ)。

        一般有JPGPNG两种格式,而JPG24位)一般是有损压缩的,图片会失真;而PNG是无损压缩(一般是24位,RGB三种颜色各8,也有32位,RGB再加上一个透明度,即ARGB四个通道*8),所以保存为PNG格式的话图片会相对大一些。另外在windows你修改拓展名是没有用的,一张PNG修改了后缀名为JPG实际上还是PNG,由文件二进制信息决定的,不要被拓展名欺骗了,所以你在程序里存储文件名后面加个JPG也是没卵用的,它决定于程序接口API存储图像的实现方式,一般会让在API方法里让你选择哪种格式保存。

        然后考虑到如果自己压缩,怕损失了图像的信息(虽然已经保存下来的图像也是压缩过的),也不知道会不会对图像识别造成影响,所以最后还是放弃了,决定找别的算法,不会改变大小(改变原来的数据)的算法。

     

    2  异或加密

    简单粗暴的原理,比如输入a异或一个常量等于b,然后我们用b异或这个常量又可以得到a。所以我们可以把图像用二进制字节的方式读出来,然后异或一个随机常量,之后解密的时候再异或这个随机常量(随机常量用一个keyFile存起来),考虑到每个字节都要生成一个随机常量就太多了,可以对每张图像都只生成常数个来循环使用。下面展示一下加密的简单伪码实现。

    private static final int KEY_NUM = 999; 
    BufferedOutputStream keyFile = new BufferedOutputStream(keyFileName);
    ArrayList<Integer> keys = new ArrayList<Integer>(KEY_NUM);
    
    
    for(int i=0;i<KEY_NUM;i++) {
    int key = rand.nextInt(Byte.MAX_VALUE);
    keys.add(key);
    keyFile.write(key);
    }
    
    BufferedInputStream bis = new BufferedInputStream(src);
    BufferedOutputStream bos = new BufferedOutputStream(des);
    while((len=bis.read()) != -1) {
    int key = keys.get(i % KEY_NUM);
    i++;
    bos.write(len^key);
    }

     

    3 对项目图像进行加密

    为了通用,写了一个方法类来对文件夹下的所有图像进行加密,大致用法如下。

    Usage: [enc sourceDir encryptDir keyDir | dec encryptDir decryptDir keyDir]
    
    example1:[enc /home /secure/enc /secure/key]
    
    example2:[dec /secure/enc/home /secure/dec /secure/key]

    程序会把源图像目录sourceDir(包括这个根目录)的目录结构复制到加密目录encryptDirkey目录keyDir下,然后把sourceDir下对应位置的文件加密,然后保存到encryptDirkeyDir下。解密也是同理,但是解密时候输入的加密目录要加密根目录的下一层,比如根目录是/secure/enc/,要使用/secure/enc/home,这个看了具体实现就明白了。其实就是简单的递归查找文件目录和复制以及加密解密后的放置。涉及到源图像目录,加密目录,解密目录和key目录。

    转载于:https://www.cnblogs.com/liaohuiqiang/p/7625857.html

    展开全文
  • 基于DNA编码的图像加密,采用将图像分块进行DNA编码,通过CHEN超混沌系统产生密钥,进行特殊的DNA运算后解码得到加密后的图像
  • 基于混沌的图像加密
  • 该压缩包是针对图像加密的DNA编码,对图像进行DNA编解码进行异或或加法的加解密,适宜做图像加密方面的人员下载
  • 1.随机打乱各行进行数字图像加密import cv2import numpy as npimport matplotlib.pyplot as pltimport chch.set_ch()RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')# 返回矩阵的行和列s = RGB.shape[0]r =...

    1.随机打乱各行进行数字图像加密

    import cv2

    import numpy as np

    import matplotlib.pyplot as plt

    import ch

    ch.set_ch()

    RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')

    # 返回矩阵的行和列

    s = RGB.shape[0]

    r = np.random.choice(s, size=s, replace=False, p=None)

    RGBS = RGB[r, :, :]

    j = 0

    f = np.arange(0, len(r))

    while j <= len(r):

    # find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

    for (i, val) in enumerate(r):

    if val == j:

    f[j] = i

    j = j + 1

    RGBE = RGBS[f, :, :]

    plt.subplot(1, 2, 1)

    plt.imshow(RGBS)

    plt.title(u"加密后")

    plt.subplot(1, 2, 2)

    plt.imshow(RGBE)

    plt.title(u"解密后")

    plt.show()

    2. 随机打乱各列进行数字图像加密

    import cv2

    import numpy as np

    import matplotlib.pyplot as plt

    import ch

    ch.set_ch()

    RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')

    # 返回矩阵的行和列

    s = RGB.shape[1]

    r = np.random.choice(s, size=s, replace=False, p=None)

    RGBS = RGB[:, r, :]

    j = 0

    f = np.arange(0, len(r))

    while j <= len(r):

    # find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

    for (i, val) in enumerate(r):

    if val == j:

    f[j] = i

    j = j + 1

    RGBE = RGBS[:, f, :]

    plt.subplot(1, 2, 1)

    plt.imshow(RGBS)

    plt.title(u"加密后")

    plt.subplot(1, 2, 2)

    plt.imshow(RGBE)

    plt.title(u"解密后")

    plt.show()

    3.同时打乱各行各列进行数字图像加密

    import cv2

    import numpy as np

    import matplotlib.pyplot as plt

    import ch

    ch.set_ch()

    RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')

    # 返回矩阵的行和列

    s_1 = RGB.shape[0]

    r = np.random.choice(s_1, size=s_1, replace=False, p=None)

    RGBS = RGB[r, :, :]

    s_2 = RGB.shape[1]

    c = np.random.choice(s_2, size=s_2, replace=False, p=None)

    RGBSS = RGBS[:, c, :]

    i = 0

    f = np.arange(0, len(c))

    while i <= len(c):

    # find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

    for (k, val) in enumerate(c):

    if val == i:

    f[i] = k

    i = i + 1

    j = 0

    g = np.arange(0, len(r))

    RGBE = RGBSS[:, f, :]

    while j <= len(r):

    # find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

    for (k, val) in enumerate(r):

    if val == j:

    g[j] = k

    j = j + 1

    RGBEE = RGBE[g, :, :]

    plt.subplot(1, 2, 1)

    plt.imshow(RGBSS)

    plt.title(u"加密后")

    plt.subplot(1, 2, 2)

    plt.imshow(RGBEE)

    plt.title(u"解密后")

    plt.show()

    4. 随机打乱像素点进行数字图像加密

    展开全文
  • 为提升图像的置乱效果和置乱性能,提出了一种基于Arnold变换的双置乱图像加密算法.对原始图像进行分块来削弱图像邻域像素的相关性,对每块图像进行Arnold位置置乱来消除图像块的空间相关性,对整幅图像进行Arnold像素值...
  • 图像加密算法研究

    2011-10-10 12:09:00
    图像加密算法图像加密算法研究现状分析研究
  • 一个混沌算法的图像加密程序,演示了图像的读写,几种混沌算法如何用于图像的加密解密。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,264
精华内容 1,305
关键字:

图像加密