我正在嘗試在 python 結果中創建一個簡單的圖像加密器
我正在用python(我自己)編寫一個程序來加密圖像。我不希望或期望它最終成為最先進的加密技術並且安全,但我有一個問題。結果加密圖像仍然具有原始圖像的可辨識痕跡。我知道它是因為我加密它的方式….所以我的程序將圖像載入為所有像素顏色(RGB)的整數值數組,然後我將 ASCII 密碼轉換為 0-94 之間的數字(可輸入字元),然後使用保存的隨機生成的字典將這些數字隨機映射到 0-255 之間的數字,這樣我就可以避免顏色可能保持相似。然後我用這個數字用公式 old_pixel_value + hashed_password_character mod 256 移動像素值。問題是,如果有一個大的空白或一片均勻的顏色,就會有這些重複的條紋,然後你仍然可以辨識出這個形狀,下面放一張圖片。那麼我該如何更改或添加什麼以使加密的圖像看起來更隨機???
你所做的是這樣的: -
它被稱為電子密碼本式加密。對於分組密碼加密,請閱讀您自己的像素轉換算法。對於純文字,讀取原始像素值。你能看到模式是如何重複的嗎?這就是散列密碼的長度,也就是所謂的塊寬度。您一遍又一遍地使用它來加密塊寬度的像素數量。因為背景是恆定的白色,所以它會一遍又一遍地加密為相同的值。並且由於塊寬橫跨自行車,它仍然會在不斷重複的背景下出現。
你需要這樣做: -
它被稱為密碼塊連結,並在順序塊之間創建關係。您必須調整您的算法,以便一個塊的數據以某種方式傳播到下一個塊。傳統方法(如圖所示)是簡單地異或。現在每個後續塊都將受到前一個塊的影響,您將獲得一個更加隨機的模式。
您目前不需要初始化向量。您可以稍後在您的連結算法工作時解決這個問題。強烈建議您在重複傳輸相同資訊時停止中繼攻擊並洩漏加密資訊(每次發送相同資訊時密文都是相同的)。
筆記。使用一組相當複雜的異或和位移操作來加密您的資訊/圖像也是傳統的。這些將在分組密碼加密框中。它們會產生雪崩效應,因此非常小的變化會產生巨大的變化。您只使用移位運算符。我不是 100% 相信一個簡單的換檔不會在某種程度上顯示出自行車的輪廓。任何人?