//#include #include #include #include #include int main(){ unsigned char* data = malloc(128); size_t datalen = 0; const char* password = "krumpli"; EVP_CIPHER_CTX encx; unsigned char plaintext[] = "kecske\n"; //unsigned char salt[] = "nemrandom"; unsigned char salt[8]; RAND_pseudo_bytes(salt, sizeof salt); unsigned char iv[32]; unsigned char key[32]; unsigned char* ciphertext; int plaintext_len = strlen(plaintext), ciphertext_len = 0; EVP_BytesToKey(EVP_aes_128_cbc(), EVP_md5(), salt, password, strlen(password), 1, key, iv); int len1, len2; len1 = plaintext_len + AES_BLOCK_SIZE; ciphertext = malloc(len1); EVP_EncryptInit_ex(&encx, EVP_aes_128_cbc(), NULL, key, iv); EVP_EncryptUpdate(&encx, ciphertext, &len1, plaintext, plaintext_len); EVP_EncryptFinal(&encx, ciphertext + len1, &len2); ciphertext_len = len1 + len2; fwrite("Salted__", 1, 8, stdout); fwrite(salt, 1, 8, stdout); fwrite(ciphertext, 1, ciphertext_len, stdout); fputs("hurra.", stderr); return 0; }