我已经给出一个样本加密模块,其简单地异或与该分组数据的密钥并将结果中构建分组本身....变换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