1. 程式人生 > 其它 >密碼函式庫學習

密碼函式庫學習

最近發現有很多現成的密碼庫,可以直接使用,現在這裡記錄總結一下:

LibTomCrypt

短小精幹,結構清晰明瞭,速度中等。適合初學密碼學的學生和期望對密碼學有進一步瞭解的人士。名氣和使用廣泛性不如 OpenSSL和Crypto++

LibTomCtypt中實現了以下演算法:AES、Safer、Twofish、anubis、Blowfish、Cast5、DES、KASUMI、khazad、KSEED、Multi2、noekeon、RC2、RC5、RC6、skipjack、Xtea。

OpenSSL

C語言實現,整個軟體包大概可以分成三個主要的功能部分:密碼演算法庫、SSL協議庫以及應用程式。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規劃的。作為一個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼演算法、常用的金鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程式供測試或其它目的使用。支援跨平臺。程式碼量比較龐大,經過很多次調整,目前的結構不再清晰明瞭,要程式碼剝離的話非常痛苦,使用起來不是很方便。

下載

連結

安裝

參考:連結

注意:安裝後需要配置系統變數才能咋CMD中使用

使用

1、help

訊息摘要演算法

訊息摘要演算法的主要特徵是加密過程不需要金鑰,並且經過加密的資料無法被解密,目前可以被解密逆向的只有CRC32演算法,只有輸入相同的明文資料經過相同的訊息摘要演算法才能得到相同的密文。

openssl實現了5種資訊摘要演算法,分別是MD2、MD5、MDC2、SHA和RIPEMD。此外,OpenSSL還實現了DSS標準中規定的兩種資訊摘要演算法DSS和DSS1。

摘要一般有兩個作用:1)做資訊完整性校驗;2)儲存密碼,有些密碼是直接在資料庫中採用MD5(真實密碼值)儲存的,有的還進行加鹽處理,使其難以破解,這樣密碼只能重置,無法告訴你原始過程,因為摘要是不可逆的。

openssl dgst
常用選項有:
[-md5|-md4||-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一種摘要演算法
-out filename:將摘要的內容儲存到指定檔案中
幫助:man dgst

1、MD5

2、MD4

3、blake2b512

4、SM3

加解密演算法

目錄結構

1、Crypto目錄

是OpenSSL所有加密演算法原始碼檔案和一些PKI相關標準原始碼存放的目錄(如X509原始碼檔案)。包含了OpenSSL密碼演算法庫的所有內容。是OpenSSL中最重要的目錄。

2、SSL目錄存放了SSL協議各個版本的實現原始碼(SSL2.0、SSL3.0)以及TLS1.0的協議原始碼檔案。包含了OpenSSL協議庫的所有內容。

3、Doc目錄是OpenSSL使用的說明文件存放的目錄。包含三個部分:應用程式說明文件加密演算法庫API說明文件以及SSL協議API說明文件

4、APPs目錄存放了OpenSSL所有應用程式的原始碼檔案。即OpenSSL中的各個命令的實現程式碼。

5、Demos目錄OPenSSL應用的例項。主要由一些openSSL的愛好者寫的應用例項的例子,在剛開始學習之前,可以研究研究。

6、Include目錄存放了使用OpenSSL的庫進行程式設計的時候可能需要使用到的一些標頭檔案。

7、test目錄存放了OpenSSL自身功能測試程式的原始碼檔案。

Crypto++

C++語言實現,程式碼龐大且複雜,使用起來不方便。支援跨平臺

mbedtls

ARM mbedtls使開發人員可以非常輕鬆地在(嵌入式產品中加入加密和 SSL/TLS 功能。它提供了具有直觀的 API 和可讀原始碼的 SSL 庫。該工具即開即用,可以在大部分系統上直接構建它,也可以手動選擇和配置各項功能。

mbedtls 庫提供了一組可單獨使用和編譯的加密元件,還可以使用單個配置標頭檔案加入或排除這些元件。
從功能角度來看,該mbedtls分為三個主要部分:

    • - SSL/TLS 協議實施。
    • - 一個加密庫。
    • - 一個 X.509 證書處理庫。

參考

1、密碼庫LibTomCrypt學習記錄——目錄

2、mbedtls入門和使用

作者: Pam

出處: https://www.cnblogs.com/pam-sh/>

關於作者:網安在讀

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出, 原文連結 如有問題, 可郵件([email protected])諮詢.