加密,是以某種特殊的演算法改變原有的資訊資料,使得未授權的使用者即使獲得了已加密的資訊,但因不知解密的方法,仍然無法了解資訊的內容。
加密型別分為兩種,對稱加密與非對稱加密,對稱加密雙方採用共同金鑰;非對稱加密,存在兩個金鑰,乙個公共金鑰(可以公開的金鑰值),乙個是私人金鑰(對外保密)。傳送資訊時,使用公共金鑰加密資訊,當收到加密資訊時,使用私人金鑰解碼資訊(被公鑰加密資訊,只有唯一的私鑰可以解密)。
1.流式密碼演算法 rc4
2.分組密碼演算法 des、 aes、idea、sm4
加密使用者密碼(pin) 保護傳輸與儲存、交易中mac生成與校驗
每次只能吃力特定一塊長度的加密演算法
生成兩個配對的金鑰 乙個用於加密,乙個用於解密。
rsa、dsa、ecc、sm2
單向加密,也稱雜湊加密 任意長度的資料作為輸入轉化為固定長度的資料輸出,保證不同的資料輸入序列不同的密碼演算法
md4 md5 sha1 sha256 sm3
1、des --des(單倍長)
是對稱加密演算法的基石,具有學習價值。到目前為止,除了窮舉搜尋法對des演算法進行攻擊外,還沒有發現更有效的辦法。但是對於現在高速計算機來說,已經算是小難度了。
des演算法在pos、atm、磁卡及智慧卡(ic卡)、加油站、高速公路收費站等領域被廣泛應用,以此來實現關鍵資料的保密,如信用卡持卡人的pin的加密傳輸,ic卡與pos間的雙向認證、金融交易資料報的mac校驗等,均用到des演算法。
金鑰長度56(jdk)、56/64(bc)
des是將8個位元組(64位)的明文加密成64bit的密文
明文 8個位元組64位
金鑰 8個位元組64位(其中每隔7位是用於校驗位,所以實際金鑰是56位)
密文 8個位元組64位
演算法比較複雜,建議使用工具。只要清楚資料的長度和金鑰的長度
注:分組加密演算法(當加密資料超過 64位 ,進行分組進行加密,des就是分組密碼中的一種)
2、3des(三重des) --3des
計算金鑰時間太長、加密效率不高
使用三條64位的金鑰對資料進行三次加密。
金鑰長度112/168(jdk)、128/192(bc)
明文 金鑰1(64位) des加密 —> 密文1
密文1 金鑰2(64位) des解密 —> 密文2
密文2 金鑰3 (64位) des加密 —> 密文
若對安全性要求不怎麼高,金鑰1可以等於金鑰3。這種情況下,金鑰的有效長度為112位,稱為雙倍長金鑰演算法
最常用的對稱加密演算法
金鑰建立時間短、靈敏性好、記憶體需求低(不管怎樣,反正就是好)
實際使用中,使用工作模式為ctr(最好用bc去實現),此工作模式需要引入iv引數(16位的位元組陣列)
金鑰長度128/192/256,其中192與256需要配置無政策限制許可權檔案(jdk6)
填充模式最常用的兩種pkcs5padding和pkcs7padding,其中後者只有bc獨有。
1、md5演算法應用:對一段message(位元組串)產生fingerprint(指紋),以防被"篡改"。但是私人的md5誰都能做,還是不夠安全,那麼有乙個第三方的認證機構,對產生的md5進行匹配認證,這就是所謂的數字簽名應用。
md5還廣泛用於加密和解密技術上,在很多作業系統(linux)中,使用者的密碼是以md5值(或類似的其它演算法)的方式儲存的, 使用者login的時候,系統是把使用者輸入的密碼計算成md5值,然後再去和系統中儲存的md5值進行比較,而系統並不「知道」使用者的密碼是什麼。
2.rsa演算法
它是第乙個既能用於資料加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名:ron rivest, adi shamir 和leonard adleman。但rsa的安全性一直未能得到理論上的證明。它經歷了各種攻擊,至今未被完全攻破。
rsa加密演算法是一種非對稱加密演算法,其玩法打破了以往所有加密演算法的規則.在rsa出現之前,所有的加密方法都是同一種模式:加密解密的規則使用同一種方式.這種長達幾個世紀的加密方案有乙個致命的缺陷.在傳遞加密資訊時,必須讓對方拿到解密的規則才能正常解密.由於加密解密的規則一致,所以儲存和傳遞"金鑰",就成了最頭疼的問題。rsa生成一對金鑰,兩個金鑰都可以用於加密,解密時需要另乙個金鑰。但是,通常使用公鑰加密私鑰解密,因為公鑰是近乎完全公開的,對於私鑰加密的資料,有太多人可以解密。理論上a和b之間要通過rsa實現保密通訊,需要a和b各自生成一組金鑰,同時儲存好自己的私鑰;用對方的公鑰加密要傳送的訊息,用自己的私鑰解密對方發過來的訊息。
應用:在簽名的場景下,用私鑰簽名,公鑰驗籤。rsa 比 des 等對稱演算法慢得多。一般在實際資料傳輸時,用 rsa 來加密比較短的對稱密碼,雙方交換密碼後再使用 des 等對稱演算法傳輸資料。
如果對安全業務不是很需要的話,只需要了解不同的演算法的應用,以及每個演算法的加密長度以及輸出長度,以上的內容以及足夠。若要了解演算法的原理,需要找更深層的學習資料,以上只是概述。
POS終端「密事」之簽到
總結工作這段時間一直做pos端的業務,查閱了資料,將理解的內容記錄下來。pos裡面的機制較為複雜,我查資料也是斷斷續續的查,不能連貫的將其裡面的內容講完。這裡,我將pos裡面的細節盡可能去挖掘清楚。pin即使用者的密碼,6位數字 操作員簽到操作員開機後,鍵入操作員 和密碼,pos驗證操作員的合法性 ...
演算法導論之堆排序相關
堆排序文件 二叉堆分為兩種 最大堆 最小堆 最大堆 最大元素在根部,在堆的所有結點中,a patent i a i 最小堆 最小元素在根部,在堆的所有結點中,a patent i a i 下面以最大堆為例解釋堆排序的具體過程 首先會用到幾個基本的函式 parent i return i 2 left...
排序相關演算法之桶排序
看千遍知識,不如寫百行 開始我的fb之旅。從最簡單的排序開始。寫一下桶排序方法。輸入 一堆待排序的數字 10,23,43,54,323 輸出 排序好的結果 首先簡單解釋一下什麼叫桶排序。首先列出乙個陣列a m 我們把這個陣列比作大小為m的桶組合,每個陣列元素象徵了乙個桶。假設待排序的數字總數為n個,...