文件傳輸-對數據進行加解密的方法!

由於項目安全要求,需要使用RSA算法對部分關鍵數據進行加密,並使用OAEPWithSHA-256AndMGF1對數據進行填充。通過搜索最終選擇較爲通用OpenSSL庫,但OpenSSL的RSA算法默認是使用SHA-1的方式進行,而項目要求使用安全性更高的SHA-256,所以需要對OpenSSL進行部分修改。


OpenSSL使用RSA算法加解密數據非常簡單,這裏以加密爲例,在通過PEM_read_RSA_PUBKEY讀取證書後即可通過RSA_public_encrypt函數對數據進行加解密,看一下這個函數的聲明: 


01.png


這裏可以看到除了輸入輸出數據和rsa對象之外還有一個填充方式,可選的填充方式有RSA_PKCS1_PADDING、RSA_PKCS1_OAEP_PADDING、RSA_SSLV23_PADDING、RSA_NO_PADDING,這裏選擇RSA_PKCS1_OAEP_PADDING,但目前使用的還是SHA-1的算法,通過RSA_public_encrypt的參數不能修改。跟進RSA_public_encrypt函數: 


02.png


這裏看到調用了rsa對象裏一個指針指向的函數,OpenSSL裏有大量這種用法,給代碼閱讀帶來困難,一個快速且有效的方法是通過動態調試,在這類調用上下斷點後單步跟進,即可看到其真正調用的函數。通過調試,這裏會調用RSA_eay_public_encrypt,並根據我們傳入的參數調用RSA_padding_add_PKCS1_OAEP: 


03.png


而RSA_padding_add_PKCS1_OAEP只是新增了兩個空的參數直接調用了RSA_padding_add_PKCS1_OAEP_mgf1,再看一下RSA_padding_add_PKCS1_OAEP_mgf1的實現: 


04.png


當傳入的md的值爲空時,這裏就會使用EVP_sha1的地址賦值,即默認使用SHA-1的算法,我們需要使用SHA-256算法時,一個最簡單的方法就是將這裏的EVP_sha1改爲EVP_sha256,重新編譯並鏈接修改過的庫即可。但這可能會導致當前程序中其他使用了OpenSSL庫的其他代碼出現異常,一個更通用的方法是通過直接調用RSA_padding_add_PKCS1_OAEP_mgf1並將md的值賦爲EVP_sha256。


大文件傳輸領域,數據加密對於傳輸的重要性非比一般,安全穩定的傳輸數據是每一個企業所想要達到的要求。專注於文件傳輸的鐳速 (Raysync)擁有獨特的數據傳輸加密技術,在互聯網時代,畢竟大數據的安全性是最重要的!滿足企業的多個與安全相關的信息要求時,健康的加密技術可以輕鬆地作爲可靠的安全工具。只使用加密技術,您永遠無法獲得最佳效益。事實上,您需要根據您的獨特要求和風險戰略性地適當地使用它。在這個時代,加密文件傳輸服務已經成爲安全在線大文件傳輸最流行的方法之一。在保護敏感數據和信息方面,加密功能可以作爲一道防線。


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