久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2285|回復: 0
收起左側

利用python實現混沌加密

[復制鏈接]
ID:1029290 發表于 2022-5-24 16:20 | 顯示全部樓層 |閱讀模式
以下代碼使用python實現的復合混沌加密一張圖片
  1. import cv2
  2. import math
  3. import numpy as np


  4. def int2bin8(x):                               # 整型轉8位二進制
  5.     result="";
  6.     for i in range(8):
  7.         y=x&(1)
  8.         result+=str(y)
  9.         x=x>>1
  10.     return result[::-1]

  11. def int2bin16(x):                              # 整型轉8位二進制
  12.     result="";
  13.     for i in range(16):
  14.         y=x&(1)
  15.         result+=str(y)
  16.         x=x>>1
  17.     return result

  18. def Encryption(img,j0,g0,x0,EncryptionImg):
  19.     x = img.shape[0]
  20.     y = img.shape[1]
  21.     c = img.shape[2]
  22.     g0 = int2bin16(g0)
  23.     for s in range(x):
  24.         for n in range(y):
  25.             for z in range(c):
  26.                 m = int2bin8(img[s][n][z])                   # 像素值轉八位二進制
  27.                 ans=""
  28.                 print("ok")
  29.                 for i in range(8):
  30.                     ri=int(g0[-1])                           # 取手搖密碼機最后一位ri
  31.                     qi=int(m[i])^ri                          # 與像素值異或得qi
  32.                     xi = 1 - math.sqrt(abs(2 * x0 - 1))      # f1(x)混沌迭代
  33.                     if qi==0:                                # 如果qi=0,則運用x0i+x1i=1;
  34.                         xi=1-xi;
  35.                     x0=xi                                    # xi迭代
  36.                     t=int(g0[0])^int(g0[12])^int(g0[15])     # 本源多項式x^15+x^3+1
  37.                     g0=str(t)+g0[0:-1]                       # gi迭代
  38.                     ci=math.floor(xi*(2**j0))%2              # 非線性轉換算子
  39.                     ans+=str(ci)
  40.                 re=int(ans,2)
  41.                 EncryptionImg[s][n][z]=re                    # 寫入新圖像

  42. def Decryption(EncryptionImg, j0, g0, x0, DecryptionImg):
  43.     x = EncryptionImg.shape[0]
  44.     y = EncryptionImg.shape[1]
  45.     c = EncryptionImg.shape[2]
  46.     g0 = int2bin16(g0)
  47.     for s in range(x):
  48.         for n in range(y):
  49.             for z in range(c):
  50.                 cc = int2bin8(img[s][n][z])
  51.                 ans = ""
  52.                 print("no")
  53.                 for i in range(8):
  54.                     xi = 1 - math.sqrt(abs(2 * x0 - 1))
  55.                     x0 = xi
  56.                     ssi = math.floor(xi * (2 ** j0)) % 2
  57.                     qi=1-(ssi^int(cc[i]))
  58.                     ri = int(g0[-1])
  59.                     mi=ri^qi
  60.                     t = int(g0[0]) ^ int(g0[12]) ^ int(g0[15])
  61.                     g0 = str(t) + g0[0:-1]
  62.                     ans += str(mi)
  63.                 re = int(ans, 2)
  64.                 DecryptionImg[s][n][z] = re


  65. if __name__ == "__main__":
  66.     img = cv2.imread("D:/pycharmproject/network_security/2.bmp", 1)                    # 讀取原始圖像
  67.     cv2.imshow("img", img)                                                             # 顯示原圖

  68.     EncryptionImg = np.zeros(img.shape, np.uint8)
  69.     Encryption(img,10,30,0.123345,EncryptionImg)                                       # 加密
  70.     cv2.imwrite("D:/pycharmproject/network_security/EncryptionImg2.bmp",EncryptionImg)  # 保存
  71.     cv2.imshow("EncryptionImg", EncryptionImg)                                        # 顯示

  72.     img = cv2.imread("D:/pycharmproject/network_security/EncryptionImg2.bmp", 1)        # 讀取加密圖像
  73.     DecryptionImg = np.zeros(img.shape, np.uint8)
  74.     Decryption(img, 10, 30, 0.123345, DecryptionImg)                                   # 解密
  75.     cv2.imwrite("D:/pycharmproject/network_security/DecryptionImg2.bmp", DecryptionImg) # 保存
  76.     cv2.imshow("DecryptionImg ", DecryptionImg)                                        # 顯示

  77.     cv2.waitKey(0)
復制代碼

評分

參與人數 1黑幣 +10 收起 理由
admin + 10 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线播放国产一区二区三区 | 四虎影院美女 | 成人免费视频一区 | 一区二区日本 | 欧美一区二区 | 精品九九九 | 中文字幕在线网 | 自拍偷拍中文字幕 | 国产精品视频一区二区三区四区国 | 日韩成人| 四虎影院欧美 | 国产精品久久久久久久三级 | 欧美一区二区三区视频在线播放 | 日韩欧美在线免费观看 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 国产高清一区二区 | 天天夜夜人人 | 亚洲视频一区在线观看 | 中文字幕一区二区三区在线乱码 | 亚洲视频一区 | 欧美无乱码久久久免费午夜一区 | 欧美一区二区三区久久精品视 | 久久一区视频 | 亚洲一区免费视频 | 91麻豆精品一区二区三区 | av日日操 | h视频免费观看 | 亚洲成人一区二区三区 | 日本中文字幕在线观看 | 日韩成人中文字幕 | 午夜视频一区 | 亚洲国产成人精品一区二区 | 国产人成精品一区二区三 | 日本a视频 | 日韩一区二区在线视频 | 免费毛片www com cn | 中文字幕中文字幕 | 精品国产三级 | 国产欧美在线 | 综合久久av | 亚洲精品无 |