Tag: aes

如何使用OpenSSL进行AES解密

我想使用OpenSSL库来解密一些AES数据。 代码可以访问密钥。 这个项目已经将libopenssl用于其他方面了,所以我想坚持使用这个库。 我直接查看了/usr/include/openssl/aes.h因为OpenSSL网站对文档很轻松。 唯一的解密function就是这个: void AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key); 不幸的是,这没有办法指定in指针的长度,所以我不确定它是如何工作的。 我认为还有其他一些function可以用数字参数来区分加密和解密。 例如: void AES_ecb_encrypt(*in, *out, *key, enc); void AES_cbc_encrypt(*in, *out, length, *key, *ivec, enc); void AES_cfb128_encrypt(*in, *out, length, *key, *ivec, *num, enc); void AES_cfb1_encrypt(*in, *out, length, *key, *ivec, *num, enc); void AES_cfb8_encrypt(*in, *out, length, *key, *ivec, *num, enc); […]

使用openssl C进行AES(aes-cbc-128,aes-cbc-192,aes-cbc-256)加密/解密

我只想用openSSL测试这三种模式的AES:128,192和256密钥长度,但我的解密文本与我的输入不同,我不知道为什么。 此外,当我传递一个巨大的输入长度(比方说1024字节)时,我的程序显示core dumped …我的输入始终是相同的,但它无关紧要,至少现在。 inheritance人代码: #include #include #include #include int main(int argc, char **argv) { int i; int keylength; printf(“Give a key length [only 128 or 192 or 256!]:\n”); scanf(“%d”, &keylength); /* generate a key with a given length */ unsigned char aes_key[keylength]; memset(aes_key, 0, sizeof(aes_key)); if (!RAND_bytes(aes_key, keylength)) { exit(-1); } aes_key[keylength-1] = ‘\0’; […]

AES CTR 256加密OpenSSL上的操作模式

我是OpenSSL的新手,任何人都可以给我一个如何从C文件初始化AES CTR模式的提示。 我知道这是方法的签名,但我遇到了参数问题,没有很多文档也没有明确的例子如何进行简单的加密。 如果有人可以举例说明这种方法,我将不胜感激。 提前致谢! void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out, const unsigned long length, const AES_KEY *key, unsigned char ivec[AES_BLOCK_SIZE], unsigned char ecount_buf[AES_BLOCK_SIZE], unsigned int *num); Hi Caf我真的很感谢你的快速回答它真的很有用,而且是我在网上找到的最好的例子。 我试图打开一个长度不确定的文件,加密它并用生成的密文写入另一个文件,然后打开加密文件并恢复明文。 我需要使用相当数量MB的文件,因为我想对CPU的性能进行基准测试。 但是我在解密时仍然遇到问题。 不知何故,当解密相当大的txt文件(1504KB)时,它不会解密它完成,我得到一半的明文,另一半仍然加密。 我认为这可能与iv的大小或我打电话给柜台的方式有关。 这是我到目前为止: #include #include #include struct ctr_state { unsigned char ivec[16]; unsigned int num; unsigned char ecount[16]; }; FILE *fp; […]