在Linux下使用Crypto++库实现高效加密,可以遵循以下步骤:
sudo apt-get install libcrypto++-dev libcrypto++-doc libcrypto++-utils命令来安装Crypto++库及其开发文件。AES、DES、RSA等)来构建加密和解密函数。#include <iostream>
#include <crypto++/aes.h>
#include <crypto++/modes.h>
#include <crypto++/hex.h>
#include <crypto++/filters.h>
#include <crypto++/osrng.h>
std::string encrypt(const std::string& plaintext, const CryptoPP::byte* key, const CryptoPP::byte* iv)
{
    CryptoPP::ECB_Mode<CryptoPP::AES>::Encryption encryption;
    encryption.SetKey(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    std::string ciphertext;
    CryptoPP::StringSink sink(ciphertext);
    sink.Put(reinterpret_cast<const CryptoPP::byte*>(plaintext.c_str()), plaintext.size());
    sink.MessageEnd();
    return ciphertext;
}
std::string decrypt(const std::string& ciphertext, const CryptoPP::byte* key, const CryptoPP::byte* iv)
{
    CryptoPP::ECB_Mode<CryptoPP::AES>::Decryption decryption;
    decryption.SetKey(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
    std::string plaintext;
    CryptoPP::StringSource source(ciphertext, true,
        new CryptoPP::StreamTransformationFilter(decryption,
            new CryptoPP::HexDecoder()
        )
    );
    source.Get(reinterpret_cast<CryptoPP::byte*>(plaintext.c_str()), plaintext.size());
    return plaintext;
}
int main()
{
    // 生成密钥和初始化向量
    CryptoPP::AutoSeededRandomPool rng;
    CryptoPP::byte key[CryptoPP::AES::DEFAULT_KEYLENGTH] = {0};
    rng.GenerateBlock(key, sizeof(key));
    CryptoPP::byte iv[CryptoPP::AES::BLOCKSIZE] = {0};
    rng.GenerateBlock(iv, sizeof(iv));
    // 加密
    std::string plaintext = "Hello, World!";
    std::string ciphertext = encrypt(plaintext, key, iv);
    std::cout << "Encrypted: " << ciphertext << std::endl;
    // 解密
    std::string decryptedText = decrypt(ciphertext, key, iv);
    std::cout << "Decrypted: " << decryptedText << std::endl;
    return 0;
}
g++)编译源文件,并链接Crypto++库。g++ -o encrypted_example encrypted_example.cpp -lcrypto++./encrypted_example请注意,上述示例使用了ECB模式,它通常不推荐用于安全敏感的应用,因为相同的明文块会产生相同的密文块。在实际应用中,建议使用更安全的模式,如CBC或GCM。此外,密钥和初始化向量的管理也是安全性的关键部分,应确保它们的安全存储和传输。