我已經給出一個樣本加密模塊,其簡單地異或與該分組數據的密鑰並將結果中構建分組本身....變換xorcrypto加密模塊,AES加密模塊
的代碼的數據字段xoricv模塊在這裏。
void
xorcrypto(uint8_t *key, uint32_t keylen,
uint8_t *data, uint32_t datalen)
{
int d, k;
for (d=0, k=0; d < datalen; ++d, k = (k+1)%keylen) {
data[d] ^= key[k];
}
}
現在我需要更改模塊,以便它執行AES加密而不是簡單的xor操作。
你會建議可能的轉換我需要做嗎?
這是我的項目的一小部分,我被困在...
之間
的AES指令我已經在命令行中使用加密OpenSSL的ENC -AES-256-CBC - 鹽 - 在file.txt的退房手續file.enc
日報我會進行大量的錯誤,當我試圖通過我自己來實現它,我的時間很有限,所以請幫我.......
這裏是我的實現......雖然我在這裏添加它在答案專欄,因爲可能是我的實現中有一個小錯誤,我可以通過一些有價值的建議來解決,但仍然如果任何其他方式是可能的,請建議並提供我一些實現代碼...描述
/* u_int8_t ... etc all are typedefs for uint8_t....etc
so don't bother about them */
void xorcrypto(u_int8_t *key, u_int32_t keylen,u_int8_t *data,
u_int32_t datalen)
{
int ch,i,j;
uint8_t modata[100];
FILE *fp,*fr,*fq,*ft;
fp=fopen("key","w");
fputs((char *)key,fp);
fq=fopen("file.txt","w");
fputs((char *)data,fq);
fclose(fp);
fclose(fq);
system("sudo openssl enc -aes-256-cbc -salt -in file.txt -out file.enc -pass file:key");
fr=fopen("file.enc","r");
memset(data,0,sizeof(data));
i=0;
while((ch=fgetc(fr))==EOF) {
data[i]=ch;
i++;
}
fclose(fr);
system("sudo openssl enc -d -aes-256-cbc -salt -in file.enc
-out file1.txt -pass file:key");
ft=fopen("file1.txt","r");
memset(modata,0,sizeof(modata));
j=0;
while((ch=fgetc(ft)) != EOF) {
modata[j]=ch;
j++;
}
fclose(ft);
}
電話模塊的功能 -
bool
espcrypto(esp_private *epriv, sendip_data *data, sendip_data *pack)
{
u_int32_t keylen;
u_int8_t *key;
static u_int8_t fakekey;
struct ip_esp_hdr *esp = (struct ip_esp_hdr *)pack->data;
if (!epriv->keylen) { /* This isn't going to be very productive... */
key = &fakekey;
keylen = 1;
} else {
key = (u_int8_t *)epriv->key;
keylen = epriv->keylen;
}
/* Encrypt everything past the ESP header */
xorcrypto(key, keylen,
(u_int8_t *)esp->enc_data,
pack->alloc_len + data->alloc_len -
sizeof(struct ip_esp_hdr));
return TRUE;
}
這是在數據包生成工具xorcrypto.c文件我使用代碼在通過命令行進行數據包構建期間鏈接爲-am xorcrypto.so
。這就是爲什麼我很懶惰。我首先尋找可以充當概念驗證的實現。以後可以完成所有優化。
我得到的輸出是 - 加密沒有執行的所有數據仍然是純文本的數據包。
[email protected] ~/Downloads/sendip-2.5-mec-2/mec $ cat file.txt
[email protected] ~/Downloads/sendip-2.5-mec-2/mec $ cat file.enc
Salted__����
}�#��G�����0����[email protected] ~/Downloads/sendip-2.5-mec-2/mec $ cat file1.txt
[email protected] ~/Downloads/sendip-2.5-mec-2/mec $
爲什麼file.txt的是空連key
文件沒有更新???
如果需要其他信息,我會在這裏添加它......但請幫助我離開網格。
如果你想成爲真懶:'系統( 「ENC的OpenSSL -AES-256-CBC -salt -in file.txt的退房手續file.enc」 ); // TODO:refactor' – MSalters