密碼函數庫學習

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

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入門和使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章