Python与matlab 实现图像加密--扩散加密

1、图像加密

使用扩散加密

图像加密中,扩散处理是在不改变像素点位置的条件下,将任一明文像素点的信息隐藏在尽可能多的密文像素点中。

基于异或运算的扩散处理

正向(i从1到MN)的算法与其逆算法:
Python与matlab 实现图像加密--扩散加密_第1张图片
逆向(i从MN到1)的算法与其逆算法:
Python与matlab 实现图像加密--扩散加密_第2张图片
C和S是密码向量,P是明文图像

Python 实现代码:

import numpy as np
import cv2 as cv


def confusion(img, S1, S2):
    h, w = img.shape
    length = h*w
    A = np.array(np.reshape(img, (h*w, 1)))

    B  = np.zeros_like(A)
    B0 = 0
    B[0] = cv.bitwise_xor(cv.bitwise_xor(B0, S1[0]), A[0])
    for i in range(1, length):
        B[i] = cv.bitwise_xor(cv.bitwise_xor(B[i-1], S1[i]), A[i])

    C = np.zeros_like(A)
    C0 = 0
    C[length-1] = cv.bitwise_xor(cv.bitwise_xor(C0, S2[length-1]), B[length-1])
    for i in range(length-2, 

你可能感兴趣的:(算法类,python,matlab)