C 金鑰生成和資料加密

2021-09-26 06:12:25 字數 686 閱讀 3581

1、最近在學習加密相關的東西,在這裡將自己用到的金鑰生成演算法和加密演算法記錄下來

使用ed25519公鑰簽名系統生成簽名,金鑰,向量iv

3、加密演算法:這裡使用openssl aes-cbc進行資料的加密

4、流程

5、資料加密和解密

在資料加密和解密的時候遇到乙個問題,就是aes-cbc演算法加解密的資料長度必須是key的整數倍,在上面我們生成的key大小是16位元組,當然也可以生成64位元組的key。如果資料長度不滿16的整數倍,有兩個方法可以解決,第乙個方法就是多餘的資料不加密,第二個方法就是多餘的資料先進行base64編碼,並且將長度補充到32個位元組,補充等號(=),然後在對資料進行加密,解密的時候將資料報的最後32個位元組多餘的等號去掉。當然,第一種方法比較簡單。

6、為什麼將多餘的資料進行base64編碼後還要將資料長度補充位32個位元組

因為base64編碼是將3個位元組編碼後會成為4個位元組,那麼多餘的資料長度最多是15個位元組,base64編碼後是20個位元組,最少1個位元組,base64編碼後是4個位元組,總之不會超過32個位元組,我們將其補充位32個位元組後,就預設最後32個位元組肯定是base64編碼的,不然不知道是最後16個位元組還是最後32個位元組是base64編碼的

7、github倉庫:

AES加密金鑰和資料過短導致加密失敗

昨天寫爬蟲需要用到 aes 加密使用者密碼,用的 python,使用了 pycryptodome 這個庫,隨手填了乙個金鑰11和需要加密的資料11,我用的 aes 加密的 ecb 模式。發現加密後的結果和網頁上的加密結果不一樣,然後才牽扯出了加密庫預設的填充值問題。查詢發現 pkcs 7 填充模式預...

C 加密 金鑰容器

要安全地儲存金鑰,應將金鑰存放在金鑰容器中,而不是明文存放在檔案中。如果您不了解金鑰容器,可以參照 msdn 上的 了解計算機級別和使用者級別的 rsa 金鑰容器 cspparameters 的命名空間是 system.security.cryptography 建立和讀取金鑰容器 cspparam...

aes子金鑰生成c語言 AES加密的C語言實現

aes加密的c語言實現,在ubuntu13.10下測試成功。輸入1.txt加密內容,key金鑰 輸出2.txt密文,3.txt解密後的明文 備註 網上下的,但是這明顯不是乙個ase加密演算法,而是乙個des加密演算法!後來我又發現,這似乎是乙個ase加密的s盒簡單實現。終歸所學不足。include ...