利用openssl裡的庫函式進行AES的加解密—cbc
本人嘗試編寫的測試利用openssl庫函式進行AES中cbc的加解密,至於其它ecb,cfb,ofb等的加解密可套路以下程式。
在貼程式碼之前本人需要分享三個網站,個人認為對理解AES加解密和text的編寫極有用處
接下來便是本人編寫的小測試#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <openssl/aes.h> int main() { char Source[100]; unsigned char *InputData = NULL; unsigned char *EncryptData = NULL; unsigned char *DecryptData = NULL; unsigned char ivec[AES_BLOCK_SIZE]; unsigned char key[AES_BLOCK_SIZE]; AES_KEY AesKey; strcpy(Source, "1234567890abcde"); //the data which need to be encrypted int SetDataLen = strlen(Source)+1; int DataLen = strlen(Source); printf("%d\n",SetDataLen); //generate own AES key for(int iloop = 0;iloop < 16; iloop++) { key[iloop] = 32 + iloop; } InputData = (unsigned char *)calloc(SetDataLen+1, sizeof(char)); //distribute the place to put datas memcpy(InputData, Source, DataLen); //put source into inputdata EncryptData = (unsigned char *)calloc(SetDataLen+1, sizeof(char)); DecryptData = (unsigned char *)calloc(SetDataLen+1, sizeof(char)); //set encryption key if(AES_set_encrypt_key(key,128,&AesKey)<0) { printf("Unable to set encryption key in AES...\n"); } for(int i=0;i<AES_BLOCK_SIZE; i++) { ivec[i] = 0; //ivec is like the first IV in the picture } for(int i = 0; i<16; i++) { printf("%02x ",InputData[i]); //for text the data in the Inputdata } printf("\n"); //encryption AES_cbc_encrypt(InputData,EncryptData,SetDataLen,&AesKey,ivec,AES_ENCRYPT); for(int i=0; i<16; i++) { printf("%02X ", *(EncryptData+i)); //put out the number of encryptdata in hex formats } printf("\n"); // set decryption key if(AES_set_decrypt_key(key,128,&AesKey)<0) //AES_set_decrypt_key is to get the AesKey { printf("Unable to set encryption key in AES...\n"); } for(int i=0;i<AES_BLOCK_SIZE; i++) { ivec[i] = 0; //the ivec to decryption should be same with encryption } //decryption AES_cbc_encrypt(EncryptData, DecryptData,SetDataLen,&AesKey,ivec,AES_DECRYPT); for(int i=0; i<16; i++) { printf("%02X ", DecryptData[i]); //put out the number of decryptdata in hex formats } printf("\n"); //printf("DecryptData:%s...\n", (char *)DecryptData); return 0; }
相關推薦
UNIX下利用OpenSSL對大檔案進行AES加解密
由於專案需要檔案傳輸過程中對其進行加解密,所以就在網上查詢下加解密的相關介紹,最開始採用RSA加解密演算法,先是利用RSAEuro折騰了半天編譯的環節卡住了(編譯報錯查不出原因),後面網上發現利用OpenSSL的實現方法比較簡單。 OpenSSL
利用openssl裡的庫函式進行AES的加解密—cbc
本人嘗試編寫的測試利用openssl庫函式進行AES中cbc的加解密,至於其它ecb,cfb,ofb等的加解密可套路以下程式。 在貼程式碼之前本人需要分享三個網站,個人認為對理解AES加解密和text的編寫極有用處 接下來便是本人編寫的小測試 #include
Java中使用OpenSSL RSA公私鑰進行資料加解密儲存
使用openSSL 生成公私鑰可以參考作者 JackCousins 的文章 @http://blog.csdn.net/chaijunkun/article/details/7275632 寫的非常好,鼓掌 但在使用的過程中發現 ,例如 我在手機中可以使用公鑰簽名,伺服器
Openssl中AES加解密——CBC模式
因工作需要接觸了一端是見AES,一些需要注意的地方提醒一下新手,少走一些彎路(個人開發遇到的問題,不對專業名詞進行解釋)。本人C++開發,所以此文章傾向於C++。 使用Openssl實現的CBC的加解密,所需的Openssl庫、標頭檔案和封裝類見文章底部。 文章模組: 1、
使用java_aes_crypt對檔案進行AES加解密
下載jce_policy-6.zip,更新JCE Unlimited Strength Jurisdiction Policy Files,詳見readme檔案http://www.aescrypt.com/java_aes_crypt.html使用AESCrypt.javapublic static voi
利用標準C語言庫函式進行文字檔案讀寫
利用C語言進行檔案操作的方法有多種。其中包括在UNIX系統環境下利用系統介面進行檔案操作;在windows系統下可以利用windows系統下可以利用fopen_s等庫函式的安全版本進行檔案操作。但是用的最多的就是利用標準庫函式進行檔案操作。本文主要介紹利用C標準庫函
PHP利用openssl整理AES加解密類
<?php /** * Created by PhpStorm. * User: nassir * Date: 2017/12/11 * Time: 15:25 */ namespace Ryanc\RSA; class AES {
使用OpenSSL庫的AES加解密
AesTest.cpp #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcn
Java實現MD5演算法過程,並利用自帶MD5函式進行對比校驗
文章目錄 一、環境說明 二、演算法原理概述 三、程式設計 資料結構 重要模組步驟 四、執行結果 一、環境說明 作業系統:window10 程式語言:Java (J
不利用C語言庫函式,實現字串相關函式
1 #include<stdio.h> 2 3 int strLength(char* s)//求字元長度 4 { 5 int i=0; 6 while(s[i]!=NULL) 7 { 8 i++; 9 }
Android Hook程式,對庫函式進行HOOK
1、Hook原理 Hook技術,其本質就是劫持函式的呼叫,但是由於處於Linux使用者態,每個程序都有自己獨立的程序空間,所以必須先注入到所要Hook的程序空間,修改其記憶體中的程序程式碼,替換其過程表的符號地址。在Android中,一般是通過ptra
不用庫函式進行字串和整型資料的相互轉換
// 字串轉換成整型資料 double stoi (char* string = NULL){ if (string == NULL) throw 1; // 空字串判斷 int i = 0; d
Java中使用OpenSSL生成的RSA公私鑰進行資料加解密
RSA是什麼:RSA公鑰加密演算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發的。RSA取名來自開發他們三者的名字。RSA是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公
淺析利用高斯核函式進行半監督分類
Laplacian Regularization In Least Square learning methods, we calculate the Euclidean distance between sample points to find a cla
AES加解密
ext ole gen public 去掉 ati 默認 cal algo public class AESHelper { /// <summary> /// 獲取密鑰 /// </summar
Java中的AES加解密
body 方式 keys enc aes加密 col decode 解密 encoder 直接上代碼,Base64使用的是Java8的方法,如沒有,替換即可 KEY:即密碼 IV:即偏移量,可自訂,十六位 加密方式:AES/CBC/PKCS5Padding,128位加密 如
C++的AES加解密
aes加解密 大致 filter aes buffere extern pos data rcp 最近公司項目要做個WPF程序,但是底層加密部分要用C++來實現。通過網上搜索各種資料,地址已經記不下了,沒發貼出來了! 下面看看如何加解密的~!先貼代碼。。。。 1
Java中的AES加解密工具類:AESUtils
.com asc += for frame day 換行 fault mod 本人手寫已測試,大家可以參考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysC
AES加解密過程
secret keys nco vat 過程 encode string exception init 1 package com.pff.pff; 2 3 import java.security.SecureRandom; 4 5 import java
Java、C#雙語版配套AES加解密示例
rijndael rand encrypt encoding res ace secret names tar 這裏采用的加解密使用base64轉碼方法,ECB模式,PKCS5Padding填充,密碼必須是16位,否則會報錯! 模式:Java的ECB對應C#的Sys