【问题标题】:AES encryption from main, decryption from child主要的 AES 加密,子级的解密
【发布时间】:2013-12-18 13:53:53
【问题描述】:

我有一个主进程和一个子进程。我使用 openssl 库在 main 中创建了一个带有密钥的加密字符串。我还创建了一个具有相同密钥的加密字符串。两个输入值相同,但结果不同。

这是我的主要过程加密:

unsigned char *encryptedString;
unsigned char key[8] = {4,1,8,9,1,61,64,220};
unsigned char * enc_out = malloc(80*sizeof(char));

AES_KEY enc_key;
AES_set_encrypt_key(key, 128, &enc_key);
AES_encrypt(originalString, enc_out, &enc_key);

encryptedString = malloc(80*sizeof(char));
strcpy(encryptedString, enc_out);

free(enc_out);

这是我孩子的解密过程

//gets encryptedString as parameter argv[2] from main and it is ok

//gets originalString as argv[1] from main and it is ok

//minkeyspace and maxkeyspace calculated and they are ok


unsigned char *encryptedString;
AES_KEY dec_key;
unsigned char key[8] = {4,1,8,9,1,61,64, 0};
unsigned char * dec_out = malloc(80*sizeof(char));

for(j = minkeyspace; j < maxkeyspace ; j++){
    key[7] = j;

    AES_set_decrypt_key(key,128,&dec_key);
    AES_decrypt(encryptedString, dec_out, &dec_key);

if(strcmp(originalString, dec_out) == 0){ //They are not equal. There is a problem
    puts("FOUND");
    }
}

请帮帮我。

【问题讨论】:

    标签: c encryption cryptography aes parent-child


    【解决方案1】:

    嗯,dec_out 不应该等于encryptedString,它应该等于originalString

    另外,在查看编辑后的代码时(我想我之前错过了),您使用不同的密钥进行加密/解密:

    unsigned char key[8] = {4,1,8,9,1,61,64,220};
    unsigned char key[8] = {4,1,8,9,1,61,64, 0};
    

    最后一件事。 Sinch 你没有初始化数据( dec_out, encrypted_string )并且由于 AES_encrypt / AES_decrypt 只处理一个 block at a time,你在块之后得到不同的(未定义的)字节,所以 strcmp 失败,尝试使用比较第一个块memcmp.

    【讨论】:

    • 我正在尝试创建密钥。我正在编辑键的最后一个元素。
    • 看起来它们的长度不相等...当我期望它们在 j=220 时相等时,它们的差是 94。
    • 每次我运行 main..diffence 的变化。
    • 阅读最后的编辑,记住只比较第一个块而不是strcmp。
    【解决方案2】:
    unsigned char key[8] = {4,1,8,9,1,61,64,220};
    unsigned char * enc_out = malloc(80*sizeof(char));
    
    AES_KEY enc_key;
    AES_set_encrypt_key(key, 128, &enc_key);
    

    您正在使用 128 位密钥,但仅指定前 64 位(8 个字节)。接下来的(32 或 64)位是 malloc 返回的值,每次都会不同。因此,您使用不同的密钥进行加密和解密。

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 2012-02-24
      • 2016-09-22
      • 2015-01-20
      • 2014-01-05
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多