導讀
iOS App 簽名的原理
RSA算法原理(一)
RSA算法原理(二)
對稱加密
過程如下:
- 數(shù)據(jù)發(fā)送方選擇一種加密規(guī)則對數(shù)據(jù)進行加密豆瘫,然后通過網絡發(fā)送給數(shù)據(jù)接收方
- 數(shù)據(jù)接收方接收到數(shù)據(jù)后通過同一套加密規(guī)則铝耻,對剛發(fā)送過來的數(shù)據(jù)進行解密,然后得到原始數(shù)據(jù)
特性:
- 全程只維護一個密鑰
- 容易破解,數(shù)據(jù)不安全
- 方式和過程簡單阁最,效率快,并且加密的數(shù)據(jù)量大
以上就是對稱加密,這種算法規(guī)則也被叫做對稱加密算法睡雇。但是有一個很大的問題就是數(shù)據(jù)發(fā)送方必須將加密的密鑰告知給數(shù)據(jù)接收方,大家可能會有疑問了饮醇,這怎么會是一個問題呢它抱?比如說我們可以直接告訴對方嘛,開個碰頭會啥的朴艰,但是這可能是現(xiàn)實生活中观蓄,而我們使用的場景是在網路世界中混移,你不可能在QQ上告訴對方吧,所以保存和傳遞密鑰蜘腌,就成了最頭疼的問題沫屡。
非對稱加密
過程如下:
- 乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開的撮珠,任何人都可以獲得沮脖,私鑰則是保密的。
- 甲方獲取數(shù)據(jù)發(fā)送方的公鑰芯急,然后用它對信息加密勺届。
- 乙方得到加密后的信息,用私鑰解密娶耍。
特性:
- 數(shù)據(jù)發(fā)送方會產生一對密鑰免姿,分為公鑰和私鑰
- 公鑰加密的只有私鑰可以解,私鑰加密的只有公鑰可以解
- 傳輸過程中一般只傳輸公鑰榕酒,公鑰對外公開胚膊,大家都可以拿到,私鑰保存在數(shù)據(jù)發(fā)送方
- 加密數(shù)據(jù)量一般比較小想鹰,所以基本上會和MD5一起使用紊婉,MD5對數(shù)據(jù)加密成摘要信息,然后再用公鑰或者私鑰對摘要信息進行加密
以上就是非對稱加密辑舷。
順帶聊聊MD5
MD5:Message-Digest Algorithm 5(信息-摘要算法5)喻犁,用于確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法何缓、哈希算法)肢础,主流編程語言普遍已有MD5實現(xiàn)。將數(shù)據(jù)(如漢字)運算為另一固定長度值碌廓,是雜湊算法的基礎原理传轰,MD5的前身有MD2、MD3和MD4谷婆。
MD5算法具有以下特點:
- 壓縮性:任意長度的數(shù)據(jù)路召,算出的MD5值長度都是固定的。
- 容易計算:從原數(shù)據(jù)計算出MD5值很容易波材。
- 抗修改性:對原數(shù)據(jù)進行任何改動股淡,哪怕只修改1個字節(jié),所得到的MD5值都有很大區(qū)別廷区。
- 強抗碰撞:已知原數(shù)據(jù)和其MD5值唯灵,想找到一個具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
MD5的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的十六進制數(shù)字串)隙轻。除了MD5以外埠帕,其中比較有名的還有sha-1垢揩、RIPEMD以及Haval等。
主要用途:
- 數(shù)據(jù)發(fā)送方一般先會把數(shù)據(jù)通過MD5加密成信息摘要(其實就是一段固定長度的十六進制數(shù)敛瓷,一般是32位)叁巨,然后將數(shù)據(jù)和信息摘要一并發(fā)送給數(shù)據(jù)接收方,數(shù)據(jù)接收方接收到數(shù)據(jù)之后就開始將數(shù)據(jù)通過MD5得到信息摘要呐籽,對比自己經過MD5后的信息摘要和接收到的信息摘要進行對比锋勺,如果一致說明中途數(shù)據(jù)沒有被篡改。所以一般用在校驗上
- 數(shù)據(jù)發(fā)送方通過非對稱加密算法生成一對密鑰(私鑰在自己這里保存狡蝶,公鑰在發(fā)給數(shù)據(jù)接收方)庶橱,然后把數(shù)據(jù)通過MD5機密成信息摘要,數(shù)據(jù)摘要經過私鑰加密成數(shù)字簽名贪惹,然后將數(shù)據(jù)和數(shù)字簽名發(fā)送給數(shù)據(jù)接收方苏章,數(shù)據(jù)接收方通過公鑰對數(shù)字簽名進行解密,得出數(shù)據(jù)摘要奏瞬,然后將接收到的數(shù)據(jù)經過MD5加密成數(shù)據(jù)摘要枫绅,然后對比摘要信息,然后一致那么就認證了數(shù)據(jù)發(fā)送方硼端,也就是確定了來源可靠并淋。
PS:疑問
- 為什么不通過數(shù)據(jù)摘要信息反解密出來呢?因為這個MD5算法是一種雜湊算法也叫散列算法显蝌,算法時候不可逆的预伺,所以你無法通過加密后的數(shù)據(jù)內容演算出原始內容订咸。
- 既然不可逆曼尊,那為什么網上有很多的MD5解密工具呢?因為網上很多的這種解密工具是自己維護了一個查詢數(shù)據(jù)庫脏嚷,把平時搜集到的正向加密映射列表存儲在數(shù)據(jù)庫骆撇,當我們點擊解密的時候其實不是運行解密算法還是直接找到后臺數(shù)據(jù)庫「感穑基本桑簡單的是能夠查詢到的神郊,但是稍微比較復雜的就查詢不到了。
非對稱加密之RSA
簡要信息
- 1977年趾唱,三位數(shù)學家Rivest涌乳、Shamir 和 Adleman 設計了一種算法,可以實現(xiàn)非對稱加密甜癞。這種算法用他們三個人的名字命名夕晓,叫做RSA算法。從那時直到現(xiàn)在悠咱,RSA算法一直是最廣為使用的"非對稱加密算法"蒸辆。毫不夸張地說征炼,只要有計算機網絡的地方,就有RSA算法躬贡。
- 這種算法非匙话拢可靠,密鑰越長拂玻,它就越難破解酸些。根據(jù)已經披露的文獻,目前被破解的最長RSA密鑰是768個二進制位纺讲。也就是說擂仍,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)熬甚。因此可以認為逢渔,1024位的RSA密鑰基本安全,2048位的密鑰極其安全乡括。
數(shù)字簽名
未完待續(xù)...