1. 程式人生 > >資料安全及加密演算法對比

資料安全及加密演算法對比

平時開發中不僅會遇到各種需要保護使用者隱私的情況,而且還有可能需要對公司核心資料進行保護,這時候加密隱私資料就成為了必要。然而市場上存在著各種各樣的抓包工具及解密演算法,甚至一些公司有專門的逆向部門,這就加大了資料安全的風險,本文將通過以下幾個方面對各種加密演算法進行分析對比:


  • Base64編碼(基礎)

  • 單項雜湊函式 MD5、SHA1、SHA256、SHA512等

  • 訊息認證碼 HMAC-MD5、HMAC-SHA1

  • 對稱加密 DES|3DES|AES(高階加密標準)

  • 非對稱加密 RSA

  • 數字簽名

  • 證書


通常我們對訊息進行加解密有兩種處理方式:


  1. 只需要儲存一個值,保證該值得機密性,不需要知道原文(使用者登入)

  2. 除了保證機密性外還需要對加密後的值進行解密得到原文


Base64編碼


由於我們可能對各種各樣的資料進行加密,比如:視訊、音訊、文字檔案等,所以加密之前我們需要統一檔案型別,然後再進行加密處理。


  • Base64編碼

// 要編碼的字串
NSString *str = @"haha";

// 轉換成二進位制檔案
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

// 進行base64編碼
NSString *dataStr = [data base64EncodedStringWithOptions:kNilOptions];

NSLog
(@"%@", dataStr);


  • Base64解碼

// 先對資料進行解碼
NSData *encData = [[NSData alloc]initWithBase64EncodedString:dataStr options:kNilOptions];
   
// 將二進位制資料轉換成字串
NSString *encStr = [[NSString alloc]initWithData:encData encoding:NSUTF8StringEncoding];
   
NSLog(@"%@", encStr);


接下來分析一下Base64的編碼過程,參考維基百科:



如果要編碼的位元組數不能被3整除,最後會多出1個或2個位元組,那麼可以使用下面的方法進行處理:先使用0位元組值在末尾補足,使其能夠被3整除,然後再進行Base64的編碼。在編碼後的Base64文字後加上一個或兩個=號,代表補足的位元組數。


也就是說,當最後剩餘兩個八位位元組(2個byte)時,最後一個6位的Base64位元組塊有四位是0值,最後附加上兩個等號;如果最後剩餘一個八位位元組(1個byte)時,最後一個6位的base位元組塊有兩位是0值,最後附加一個等號。 參考下表:



  • Base64編碼原理


  1. 將所有字串轉換成ASCII碼

  2. 將ASCII碼轉換成8位二進位制

  3. 將二進位制三位歸成一組(不足三位在後邊補0),再按每組6位,拆成若干組

  4. 統一在6位二進位制後不足8位的補0

  5. 將補0後的二進位制轉換成十進位制

  6. 從Base64編碼表取出十進位制對應的Base64編碼


若原資料長度不是3的倍數時且剩下1個輸入資料,則在編碼結果後加2個=;若剩下2個輸入資料,則在編碼結果後加1個=


如上面的例子:


原資料為A,資料長度為1,1 % 3 = 1 後面加兩個==


原資料為bc,資料長度為2,2 % 3 = 2 後面加一個=


  • Base64編碼的特點


  1. 可以將任意的二進位制資料進行Base64編碼。

  2. 所有的資料都能被編碼為並只用65個字元就能表示的文字檔案。

  3. 編碼後的65個字元包括AZ,az,0~9,+,/,=

  4. 對檔案或字串進行Base64編碼後將比原始大小增加33%。

  5. 能夠逆運算

  6. 不夠安全,但卻被很多加密演算法作為編碼方式


單項雜湊函式


單向雜湊函式也稱為訊息摘要函式、雜湊函式或者雜湊函式。

單向雜湊函式輸出的雜湊值又稱為訊息摘要或者指紋


特點:


  1. 對任意長度的訊息雜湊得到雜湊值是定長的

  2. 雜湊計算速度快,非常高效

  3. 訊息不同,則雜湊值一定不同

  4. 訊息相同,則雜湊值一定相同

  5. 具備單向性,無法逆推計算


經典演算法:


MD4、MD5、SHA1、SHA256、SHA512等

安全性:


  • md5解密網站:http://www.cmd5.com

  • MD5的強抗碰撞性已經被證實攻破,即對於重要資料不應該再繼續使用MD5加密。


疑問一:單項雜湊函式為什麼不可逆??


原來好多同學知識知道md5加密是不可逆的,卻不知道是為什麼,其實雜湊函式可以將任意長度的輸入經過變化得到不同的輸出,如果存在兩個不同的輸入得到了相同的雜湊值,我們稱之為這是一個碰撞,因為使用的hash演算法,在計算過程中原文的部分資訊是丟失了的,一個MD5理論上可以對應多個原文,因為MD5是有限多個,而原文是無限多個的。


網上看到一個形象的例子:2 + 5 = 7,但是根據 7 的結果,卻並不能推算出是由 2 + 5計算得來的


疑問二:為什麼有些網站可以解密MD5後的資料??


MD5解密網站,並不是對加密後的資料進行解密,而是資料庫中存在大量的加密後的資料,對使用者輸入的資料進行匹配(也叫暴力碰撞),匹配到與之對應的資料就會輸出,並沒有對應的解密演算法。


MD5改進


由以上資訊可以知道,MD5加密後的資料也並不是特別安全的,其實並沒有絕對的安全策略,我們可以對MD5進行改進,加大破解的難度,典型的加大解密難度的方式有一下幾種:


  1. 加鹽(Salt):在明文的固定位置插入隨機串,然後再進行MD5

  2. 先加密,後亂序:先對明文進行MD5,然後對加密得到的MD5串的字元進行亂序

  3. 先亂序,後加密:先對明文字串進行亂序處理,然後對得到的串進行加密

  4. 先亂序,再加鹽,再MD5等

  5. HMac訊息認證碼


也可以進行多次的md5運算,總之就是要加大破解的難度。


Hmac訊息認證碼(對MD5的改進)


原理:


  1. 訊息的傳送者和接收者有一個共享金鑰

  2. 傳送者使用共享金鑰對訊息加密計算得到MAC值(訊息認證碼)

  3. 訊息接收者使用共享金鑰對訊息加密計算得到MAC值

  4. 比較兩個MAC值是否一致


使用:


  1. 客戶端需要在傳送的時候把(訊息)+(訊息·HMAC)一起傳送給伺服器

  2. 伺服器接收到資料後,對拿到的訊息用共享的KEY進行HMAC,比較是否一致,如果一致則信任




對稱加密演算法


對稱加密的特點:


  • 加密/解密使用相同的金鑰

  • 是可逆的


經典演算法:


  • DES 資料加密標準

  • 3DES 使用3個金鑰,對訊息進行(金鑰1·加密)+(金鑰2·解密)+(金鑰3·加密)

  • AES 高階加密標準


密碼演算法可以分為分組密碼和流密碼兩種:


  • 分組密碼:每次只能處理特定長度的一zu資料的一類密碼演算法。一個分組的位元數量就稱之為分組長度。

  • 流密碼:對資料流進行連續處理的一類演算法。流密碼中一般以1位元、8位元或者是32位元等作為單位倆進行加密和解密。


分組模式:主要有兩種


  • ECB模式(又稱電子密碼本模式)


  • 使用ECB模式加密的時候,相同的明文分組會被轉換為相同的密文分組。

  • 類似於一個巨大的明文分組 -> 密文分組的對照表。



某一塊分組被修改,不影響後面的加密結果


  • CBC模式(又稱電子密碼鏈條)


  • 相關推薦

    資料安全加密演算法對比

    平時開發中不僅會遇到各種需要保護使用者隱私的情況,而且還有可能需要對公司核心資料進行保護,這時候加密隱私資料就成為了必要。然而市場上存在著各種各樣的抓包工具及解密演算法,甚至一些公司有專門的逆向部門,這就加大了資料安全的風險,本文將通過以下幾個方面對各種加密演算法進行分析對比: Base

    linux必備安全加密小工具

    安全與加密 墨菲定律說如果有兩種或兩種以上的方式去做某件事情,而其中一種選擇方式將導致災難,則必定有人會做出這種選擇。所以也告誡我們做任何事都要確保它的正確性和安全性。接下來介紹幾種安全的linux小工具。Aide 數據庫監控配置文件:/etc/aide.confAide的數據庫存儲在/var/lib/a

    PostgreSQL之V10使用者密碼認證加密演算法scram-sha-256

    PG V10官方手冊關於使用者密碼的描述 PostgreSQL資料庫口令獨立於作業系統使用者口令。每個資料庫使用者的口令被儲存在pg_authid系統目錄中。    口令可以用 SQL 命令CREATE USER和ALTER ROLE管理,例如CREATE USE

    雲端計算的雲資料安全加密技術

    雲端計算、大資料等資訊科技正在深刻改變著人們的思維、生產、生活和學習方式,並延深進入人們的日常生活。 伴隨著社交媒體、電商、健康醫療、智慧交通、電信運營、金融和智慧城市等各行業各領域的大資料的產生,大資料分析技術和應用研究使大資料呈現出不可限量的經濟社會價值和科學研究意義,引起了國內外學術界和產業界的研

    oracle資料出現憤怒加密演算法

    作為一名程式設計師,經常會遇見一些詭異的事情,今天我就遇見一個,oracle資料通過資料泵impdp匯入後出現亂碼,經過如下操作: 1.oracle server 端 字符集查詢: select userenv('language') from dual發現查出來的結果和我原匯出資料的結果不一致;原匯出資

    探索安全-- AES加密演算法

    最近收到訊息在加密演算法領域具有一定地位的 AES加密演算法(256位) 面臨著被破解的境遇,所以呢,簡單來聊一聊       AES 設計有三個金鑰長度:128,192,256位,相對而言,AES的128金鑰比DES的56金鑰強1021倍[2]。AES

    稀疏矩陣的資料結構相關演算法

    1三元組順序表 資料結構: typedef struct{ int i,j; //非零元的行下標和列下標 ElemType e; }

    配置 Nginx SSL 避免不夠安全加密演算法

       如果Web服務中的SSL協議出現安全問題,攻擊者就可以擁有你所有的安全資訊。Nginx使用ssl模組配置HTTPS支援,就會遇到這個問題。   通過命令: nmap --script ssl-cert,ssl-enum-ciphers -p 443(host),就可以

    安全加密演算法(-)

    **目前各種系統,特別是政府和金融領域的系統對於系統的安全都是特別重視的,提到安全,不得不提加密演算法,提到加密演算法不得不提的兩種加密型別: 對稱加密和非對稱加密** 抄下百度吧: 對稱加密: 需要對加密和解密使用相同金鑰的加密演算法。由於其速度快

    網路安全加密演算法

    計算機中的網路安全 在本篇中介紹了以下幾個方面: 機密性 密碼學 對稱加密演算法(DES, 3DES, AES) 公開祕鑰演算法 RSA大素數的獲取 完整性 雜湊函式(MD5, SHA-1, 並沒有提及演算法實現) 報文鑑別(MAC) 數字簽名 端點鑑別 應用 SSL(TCP網路安全) 執

    計算機網路安全 —— 對稱加密演算法 DES (一)

    一、對稱加密演算法概念        我們通過計算機網路傳輸資料時,如果無法防止他人竊聽, 可以利用密碼學技術將傳送的資料變換成對任何不知道如何做逆變換人都不可理解的形式, 從而保證了資料的機密性。這種變換被稱為加密( encryption),被加密的資料被稱為密 文(

    java學習-排序及加密簽名時資料排序方式 十大經典排序演算法(動圖演示) Java Comparator字元排序(數字、字母、中文混合排序) 編寫高質量程式碼:改善Java程式的151個建議(第5章:陣列和集合___建議70~74)

    排序有兩種 1. 類實現comparable介面呼叫List.sort(null)或Collections.sort(List<T>)方法進行排序 jdk內建的基本型別包裝類等都實現了Comparablel介面,預設是使用自然排序,即升序排序 自定義類實現Comparable介面必須要實現c

    程式設計師之網路安全系列(三):資料加密之對稱加密演算法

    系列目錄: 前文回顧 假如,明明和麗麗相互不認識,明明想給麗麗寫一封情書,讓隔壁老王送去 如何保證隔壁老王不能看到情書內容?(保密性) 如何保證隔壁老王不修改情書的內容?(完整性) 如何保證隔壁老王不冒充明明?(身份認證) 如何保證明明不能否認情書是自己寫的?(來源的不可否認) 上一節,我們使用了Ha

    安全加密演算法資料簽名總結(3)

    非對稱加密      非對稱加密演算法又稱為公開金鑰加密演算法,它需要兩個金鑰,一個稱為公開金鑰,即公鑰;另一個稱為私有金鑰,即私鑰。公鑰和私鑰需要配對使用,如果用公鑰對資料進行加密,只有用對應的私鑰才能進行解密,而如果使用私鑰對資料進行加密,那麼只有用對應的公鑰才能進行解

    資料結構:線段樹ST演算法比較

    ST演算法是一種高效的計算區間最值的方法。 他的思想是將詢問區間分解成兩個最長的二次冪的長度的區間並集的形式。 所以與線段樹不同,這種區間分解其實存在相交的分解。 因此ST演算法能維護的只是一些簡單的資訊,比如區間最值或者區間gcd問題 ST演算法的優勢: 實現簡單(qwq為什麼我覺得線段樹更

    安全安全003:C#實現MD5加密演算法

    MD5是一種資訊-摘要演算法,一種單向函式演算法(也就是HASH演算法)。將不同輸入長度的資訊進行雜湊計算,得到固定長度的輸出。它的主要特點是,不可逆 和唯一性。即不能由結果計算出輸入值;且不同的輸入值計算得到的固定長度輸出是唯一的。 目前使用的面向物件程式語言中,基本都有類庫實現好的MD5方法

    資料加密演算法簡介(轉載)(經典又權威)

    資料加密 資料加密技術是最基本的安全技術,被譽為資訊保安的核心,最初主要用於保證資料在儲存和傳輸過程中的保密性。它通過變換和置換等各種方法將被保護資訊置換成密文,然後再進行資訊的儲存或傳輸,即使加密資訊在儲存或者傳輸過程為非授權人員所獲得,也可以保證這些資訊不為其認知,從而達到保護資訊的目的。該

    一個簡單且安全的檔案加密演算法------抑或加密

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    公鑰加密演算法那些事 | RSA 與 ECC 系統對比

    https://blog.csdn.net/u010646653/article/details/73888734 一、背景 據記載,公元前 400 年,古希臘人發明了置換密碼。1881 年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啟用「恩尼格瑪」密碼機,密碼學在戰爭中起著非

    資料安全治理中的資料資產梳理使用狀況梳理

    在資料安全治理過程中,資料資產的梳理是關鍵的一步,只有明確資料資產在被哪些部門、哪些人員如何使用,才能真正保證資料在使用中的安全。 資料使用部門和角色梳理 在資料資產的梳理中,需要明確這些資料如何被儲存,需要明確資料被哪些部門、系統、人員使用,資料被這些部門、系統和人員如何使用。對於資料的儲存和系統的