背包演算法加密
❶ 非對稱加密和對稱加密的區別
非對稱加密和對稱加密在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體介紹如下:
1、加密和解密過程不同
對稱加密過程和解密過程使用的同一個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密採用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。
2、加密解密速度不同
對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。
3、傳輸的安全性不同
對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。
非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。
❷ Merkle-Hellman背包演算法的破解方法
背包加密是一種相當高級的加密方式,不容易破解,而且還原也相對容易,因此採用這種加密方式加密游戲數據也是非常好的,只要知道背包,就可以輕易算出來。
這么復雜的加密,怎麼解密?有如下兩中破解方法:1.利用孤立點破解;2.利用背包破解。所謂孤立點,還是以上面的背包為例子,我們可以把密碼設為a,看看得到了什麼密碼?1,如果我們把密碼設為b,得到的密碼為2,同理,可以把背包裡面的所有元素都利用孤立點的方法全部枚舉出來,這樣我們就把背包弄到手了,對下面的破解就不成問題了,是不是很簡單?其實在加密的時候,也許它們會利用異或運算先加密一下,再利用背包加密,這樣更難破,孤立點方法非常有效,但是不是萬能的,要結合前面的方法配合使用!利用背包,這個就簡單了,想一想,要加密也得有背包才能完成加密啊,要解密也要背包啊,這就是說,不管是用戶端,還是伺服器端,都會有該背包的,找到該背包不是就解決問題了嗎?怎麼找?大家可以稍微找一些書籍學習一下。首先是要了解進制,特別是十六進制、二進制和十進制及其之間的轉換。這些加密方法在大學應該會接觸的。
❸ 公鑰加密的常見演算法
RSA、ElGamal、背包演算法、Rabin(Rabin的加密法可以說是RSA方法的特例)、Diffie-Hellman
(D-H)
密鑰交換協議中的公鑰加密演算法、Elliptic
Curve
Cryptography(ECC,橢圓曲線加密演算法)。使用最廣泛的是RSA演算法(由發明者Rivest、Shmir和Adleman姓氏首字母縮寫而來)是著名的公開金鑰加密演算法,ElGamal是另一種常用的非對稱加密演算法。
❹ 非對稱加密演算法的主要演算法
RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。
使用最廣泛的是RSA演算法,Elgamal是另一種常用的非對稱加密演算法。
Elgamal由Taher Elgamal於1985年發明,其基礎是DiffieˉHellman密鑰交換演算法,後者使通信雙方能通過公開通信來推導出只有他們知道的秘密密鑰值[DiffieˉHellman]。DiffieˉHellman是Whitfield Diffie和Martin Hellman於1976年發明的,被視為第一種 非對稱加密演算法,DiffieˉHellman 與RSA的不同之處在於,DiffieˉHellman不是加密演算法,它只是生成可用作對稱密鑰的秘密數值。在DiffieˉHellman密鑰交換過程中,發送方和接收方分別生成一個秘密的隨機數,並根據隨機數推導出公開值,然後,雙方再交換公開值。DiffieˉHellman演算法的基礎是具備生成共享密鑰的能力。只要交換了公開值,雙方就能使用自己的私有數和對方的公開值來生成對稱密鑰,稱為共享密鑰,對雙方來說,該對稱密鑰是相同的,可以用於使用對稱加密演算法加密數據。
與RSA相比,DiffieˉHellman的優勢之一是每次交換密鑰時都使用一組新值,而使用RSA演算法時,如果攻擊者獲得了私鑰,那麼他不僅能解密之前截獲的消息,還能解密之後的所有消息。然而,RSA可以通過認證(如使用X.509數字證書)來防止中間人攻擊,但Diff ieˉHellman在應對中間人攻擊時非常脆弱。
❺ Merkle-Hellman背包演算法的分類
背包加密分為加法背包和乘法背包。
1、加法背包:我們知道,1<2,1+2<4,1+2+4<8,1+2+4+8<16,……,那麼如果我們選擇這樣一些數,這些數從小到大排列,如果前面所有的數加起來的值總小於後面的數,那麼這些數就可以構成一個背包,我們給一個這個背包裡面的某些數的和,這個數就是被加密的數,由這個背包組成這個數只有一種組合方式,這個方式就是秘密了,例如給大家一個封包(2,3,6,12,24,48),由這個背包里的某些數構成的數:86,你知道86怎麼來的嗎?當然,你看著背包裡面的內容,可以知道是由2+12+24+48得到的,如果你沒有這個背包,而是直接得到這個86,你知道組成這個86的最小的數是多少嗎?你無法知道,因為加起來等於86的數非常多:85+1=86,84+2=86等等,你是無法知道的,所以,背包加密非常難破。
2、乘法背包:乘法背包比加法背包更復雜,不僅是運算量大了很多,更重要的是你得到的一個被加密了的數據更大,一般都是上億的,而且在許多機密的機關裡面,背包的數據都不是有這個單位,而是用位。我們知道,1<2,1*2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1765, 數字的增長還是很快的,之所以復雜,就是因為數字很大啊!背包的特點是:如果背包裡面的數據按小到大排列,那麼,前面所有數據的乘積小於後面的任何一個元素,這個就是背包的特點,是不是很簡單,但是要知道乘積的數字的增長是非常快的!
❻ 背包演算法為什麼無法實現數字簽名
數字簽名採用了雙重加密的方法來實現防偽、防賴。其原理為:
(1) 被發送文件用SHA編碼加密產生128bit的數字摘要(見上節)。
(2) 發送方用自己的私用密鑰對摘要再加密,這就形成了數字簽名。
(3) 將原文和加密的摘要同時傳給對方。
(4) 對方用發送方的公共密鑰對摘要解密,同時對收到的文件用SHA編碼加密產生又一摘要。
(5) 將解密後的摘要和收到的文件在接收方重新加密產生的摘要相互對比。如兩者一致,則說明傳送過程中信息沒有被破壞或篡改過。否則不然。
所謂"數字簽名"就是通過某種密碼運算生成一系列符號及代碼組成電子密碼進行簽名,來代替書寫簽名或印章,對於這種電子式的簽名還可進行技術驗證,其驗證的准確度是一般手工簽名和圖章的驗證而無法比擬的。"數字簽名"是目前電子商務、電子政務中應用最普遍、技術最成熟的、可操作性最強的一種電子簽名方法。它採用了規范化的程序和科學化的方法,用於鑒定簽名人的身份以及對一項電子數據內容的認可。它還能驗證出文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性。
數字簽名在ISO7498-2標准中定義為:"附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造"。美國電子簽名標准(DSS,FIPS186-2)對數字簽名作了如下解釋:"利用一套規則和一個參數對數據計算所得的結果,用此結果能夠確認簽名者的身份和數據的完整性"。按上述定義PKI(Public Key Infrastructino 公鑰基礎設施)提供可以提供數據單元的密碼變換,並能使接收者判斷數據來源及對數據進行驗證。
❼ 試簡要寫出DES演算法的加密過程。 什麼是背包問題如何用背包問題構造公鑰密碼演算法。
將64位明文經初始換位後,在密鑰的參與下進行了16輪次非線性變換.
再進行和初始換位相逆的位置變換,便得出密文
背包問題簡單說就是給定一堆物品,每種重量不同,然後將這些物品中的幾種放入一個背包中使重量等於一個給定的值,這時求每種物品個數的時間會隨著堆中物品的種數的增長呈幾何指數增長。也就是說背包問題可看作一個單向函數。最初,公鑰密碼學理論的唯一實現途徑是通過背包問題的,後來又有了更先進的數學模型,如大數分解、離開對數,橢圓曲線等等,而背包問題隨著計算機速度的提高,在理論上已有點靠不住了,所以人們現在已慢慢放棄這一模型。
希望能幫到你~~~
❽ 什麼是背包演算法啊可以說的詳細一點嗎謝謝大家了```
該演算法是根據數學上的背包問題設計的。背包問題是一個最優化問題,即對一個給定空間或負重的背包和許多大小不一的物體,哪些物體放入背包才能使得浪費的背包空間或負重最小?在背包很小和物體數目較少時,這個問題還比較容易解決;但當背包很大且有很多個物體時,問題的求解就十分困難。通常,這個問題會有一個或者多個解,也有可能根本沒有解。
1977年,Merkle與Hellman合作設計了使用背包問題實現信息加密的方法。其工作原理是:假定甲想加密,則先產生一個較易求解的背包問題,並用它的解作為專用密鑰;然後從這個問題出發,生成另一個難解的背包問題,並作為公共密鑰。如果乙想向甲發送報文,乙就可以使用難解的背包問題對報文進行加密,由於這個問題十分難解,所以一般沒有人能夠破譯密文;甲收到密文後,可以使用易解的專用密鑰解密。
該演算法提出以後,經過多年的探討和研究,最終發現了它的一個致命錯誤,使之失去了任何保密的實用價值。
❾ 非對稱加密的主要演算法有哪些
非對稱加密(公鑰加密):指加密和解密使用不同密鑰的加密演算法,也稱為公私鑰加密。假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業中有n個用戶,企業需要生成n對密鑰,並分發n個公鑰。假設A用B的公鑰加密消息,用A的私鑰簽名,B接到消息後,首先用A的公鑰驗證簽名,確認後用自己的私鑰解密消息。由於公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發將變得 十分簡單。同時,由於每個用戶的私鑰是唯一的,其他用戶除了可以通過信息發送者的公鑰來驗證信息的來源是否真實,還可以通過數字簽名確保發送者無法否認曾發送過該信息。