檔案傳輸 對資料進行加解密的方法!

2021-09-19 19:42:12 字數 1367 閱讀 5911

由於專案安全要求,需要使用rsa演算法對部分關鍵資料進行加密,並使用oaepwithsha-256andmgf1對資料進行填充。通過搜尋最終選擇較為通用openssl庫,但openssl的rsa演算法預設是使用sha-1的方式進行,而專案要求使用安全性更高的sha-256,所以需要對openssl進行部分修改。

openssl使用rsa演算法加解密資料非常簡單,這裡以加密為例,在通過pem_read_rsa_pubkey讀取證書後即可通過rsa_public_encrypt函式對資料進行加解密,看一下這個函式的宣告: 

這裡可以看到除了輸入輸出資料和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函式: 

這裡看到呼叫了rsa物件裡乙個指標指向的函式,openssl裡有大量這種用法,給**閱讀帶來困難,乙個快速且有效的方法是通過動態除錯,在這類呼叫上下斷點後單步跟進,即可看到其真正呼叫的函式。通過除錯,這裡會呼叫rsa_eay_public_encrypt,並根據我們傳入的引數呼叫rsa_padding_add_pkcs1_oaep: 

而rsa_padding_add_pkcs1_oaep只是新增了兩個空的引數直接呼叫了rsa_padding_add_pkcs1_oaep_mgf1,再看一下rsa_padding_add_pkcs1_oaep_mgf1的實現: 

當傳入的md的值為空時,這裡就會使用evp_sha1的位址賦值,即預設使用sha-1的演算法,我們需要使用sha-256演算法時,乙個最簡單的方法就是將這裡的evp_sha1改為evp_sha256,重新編譯並鏈結修改過的庫即可。但這可能會導致當前程式中其他使用了openssl庫的其他**出現異常,乙個更通用的方法是通過直接呼叫rsa_padding_add_pkcs1_oaep_mgf1並將md的值賦為evp_sha256。

在 大檔案傳輸領域,資料加密對於傳輸的重要性非比一般,安全穩定的傳輸資料是每乙個企業所想要達到的要求。專注於檔案傳輸的

對檔案進行異或加解密的方法

資源加密實際上是對遊戲所用到的資源進行二進位製碼的轉換,這樣別人就無法獲取到正確的資源。在遊戲進行的時候通過對資源的解碼來獲取正確的資源,然後進行顯示。首先用於加密的演算法必須可以進行解密,不然的話就無法進行資源的載入了。cocos2d x資源加密和解密 一 鵲起驚風 雀巢 資源的加密 資源的加密過...

使用RSA對資料進行加解密及驗籤操作

最近工作中遇到rsa加密操作,公私鑰知識自行腦補,廢話不多說,直接上 傳送方 string data asda 需加籤 加密的資料 system.out.println 源資料 data 生成私鑰 keypairgenerator kpgen keypairgenerator.getinstance...

php利用自定義key,對資料加解密的方法

客戶端和服務端通訊時,有個場景很常見,通過乙個id作為url引數來回傳遞。假設現在業務上只有這個id標識,那麼需要稍微安全一點的通訊,對這個id進行加密傳輸,到服務端再進行解密。這裡需要乙個服務端進行保密的key,利用這個key進行加密和解密。加解密的方法如下 str是需要加解密的字串,key是自己...