簡單密匙加密解密

2021-04-30 15:35:44 字數 1308 閱讀 1982

加密的原理為:

讀入src,將src與key進行某種操作,便得到加密後的結果,解密時,需要用相同的key來進行解密.簡單點就是result = fn(src, password, operator) src為需要加密的, password為對應密碼,operator為相應加密操作(就是result = src password),返回的便是加密的結果.這裡將src與password做了操作,所以在不知password的情況下,是不能從result解出src

大多數軟體員寫的加密程式(不包括市面上的那些比如"高強度加密大師等是騙錢軟體")採用這種方法.

比如:要加密int src = 這段資訊(二進位制).

假設加密的操作為異或操作(^).

輸入的密碼為11111111(二進位制)

將src與 11111111進行異或(^)操作.

則加密後的資料為(二進位制)

解密的時候只要對加密後的資料再次進行與密碼進行異或(^)操作即可.

在不知道密匙(密碼11111111)的情況下,得到原始的資料是不可能的.如果輸入乙個錯誤的密碼進行解密,其最終的結果也只是得到錯誤的資料而已.

於是將其應用到程式上,好似也無法破解.

可是作者或使用者往往忽略了一點:如果對應的加密後的資訊的某一部分的原形是已知的,並且在你的加密方法足夠簡單的時候(即使你的加密是相當的複雜,也僅僅是多花了點時間),便有機可乘了.

比如對於rar檔案.用ultraedit開啟隨便乙個rar便可知道,rar的前20個位元組是固定的.如果用上面的加密方法進行加密.如果密碼設定為password = (就是字串"abcd")

rar檔案的頭幾個位元組為52 61 72 21    // 字串rar! 16進製制

那麼進行加密後的檔案的頭4個位元組必然是55 7 21 66

解密者在不知道密碼("abcd")的情況下,完全可以通過原始資料固定的頭4個位元組值來獲得密碼的值.

具體操作為:0x52 ^ 0x55

0x7   ^ 0x61

0x21 ^ 0x72

0x66 ^ 0x21

結果必然是(就是字串"abcd")

當然這有很多限制.比如對於純文字txt來說,原檔案並沒有頭部資訊,所以無法破解.

這裡的破解是對相當簡單的加密而言,並且知道密碼的長度為4位.但是對於rar檔案來說,其頭20個位元組是已知的,完全可以列舉有限種可能的結果,半猜半解的解密.對於其他某幾個位元組是固定的檔案型別也有相同的問題.雖然增強加密強度可以加大破解難度,但這也只是增加破解者的一點時間而已.

避免這類安全隱患有相當多的方法,最簡單的便是對已知的幾個位元組不加密(對於rar檔案,則不加密其頭20個位元組).這樣解密者就不能找到蛛絲馬跡了

php加密 解密 解決密匙中的加號

在做專案時經常會遇到加密與解密,例如使用者註冊後會發一封郵件到郵箱,點選郵件中的鏈結啟用賬號,這是就需要用到加密與解密。在加密與解密時經常會遇到乙個問題,就是密匙中可能會有加號,在解密的時候就解密不了,原因是遇到加號就相當於密匙結束了,下面這段加密 經過修改後已完美解決了這個問題 加密函式內部呼叫函...

google map 密匙獲取小結

1.獲取map api key a eclipse window preferences android build 記住default debug keystore xx b 生成key cmd下 執行 keytool list keystore c users zms android debug...

網路安全密匙

公用金鑰加密技術使用不對稱的金鑰來加密和解密,每對金鑰包含乙個公鑰和乙個私鑰,公鑰是公開,而且廣泛分布的,而私鑰從來不公開,只有自己知道。用途網路身份驗證 特點通用,安全 通俗解釋 在網路中使用的金鑰 加密型別 對稱加密 非對稱加密和hash加密 原理按照規則使資料進行重新排列組合 目錄1基本簡介 ...