0
我想加密输入流中的数据并写入它们,我不确定这是否是正确的方式?加密des ecb中的数据
例如,我不知道这行:in_encrypt.read((char *)pt, BLOCK_SIZE);
如果我读到达之前EOF它可能会比8较短的最后时间等failbit置位,但我将加密长度的数据8.
是否有可能获得我从流中实际读取的数据长度?如果是这样,我就可以加密正好那个长度的数据BLOCK_SIZE = 8?
EVP_CIPHER_CTX ctx;
EVP_EncryptInit(&ctx, EVP_des_ecb(), key, NULL);
while(!in_encrypt.eof())
{
in_encrypt.read((char *)pt, BLOCK_SIZE);
EVP_EncryptUpdate(&ctx, ct, &tmpLength, pt, BLOCK_SIZE);
out_encrypt.write((char *)ct, tmpLength);
}
EVP_EncryptFinal(&ctx, ct, &tmpLength);
out_encrypt.write((char *)ct, tmpLength);
ECB模式仅提供机密性,它仅适用于一个数据块(不是像任意大小的文件那样的多个块),并且您必须添加一个MAC才能安全地使用ECB模式。您应该使用经过身份验证的加密,因为它提供了*机密性和真实性。请参阅OpenSSL wiki上的[EVP Authenticated Encryption and Decryption](http://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption)。 – jww
我知道这在实践中是不可用的,它只是一个学校工作 – lllook