Linux C++开发中如何进行加密解密

蜗牛 互联网技术资讯 2024-12-18 8 0

在 Linux 系统中使用 C++ 进行加密解密,你可以使用一些常用的加密库,如 OpenSSL、Crypto API 等

  1. 首先,确保你已经安装了 OpenSSL 库。在 Ubuntu 或 Debian 系统上,可以使用以下命令安装:
sudo apt-get install libssl-dev
  1. 创建一个名为 crypto_example.cpp 的 C++ 文件,并在其中编写以下代码:
#include <iostream>
#include <openssl/aes.h>
#include <openssl/rand.h>
#include <vector>
#include <cstring>

std::vector<unsigned char> encrypt(const std::vector<unsigned char> &plaintext, const unsigned char *key) {
    AES_KEY aesKey;
    AES_set_encrypt_key(key, 256, &aesKey);

    std::vector<unsigned char> ciphertext(plaintext.size() + AES_BLOCK_SIZE);
    AES_encrypt(plaintext.data(), ciphertext.data(), &aesKey);

    return ciphertext;
}

std::vector<unsigned char> decrypt(const std::vector<unsigned char> &ciphertext, const unsigned char *key) {
    AES_KEY aesKey;
    AES_set_decrypt_key(key, 256, &aesKey);

    std::vector<unsigned char> plaintext(ciphertext.size() + AES_BLOCK_SIZE);
    AES_decrypt(ciphertext.data(), plaintext.data(), &aesKey);

    return plaintext;
}

int main() {
    const std::string plaintext = "Hello, World!";
    const std::string key_str = "0123456789abcdef"; // 16 bytes key for AES-128

    unsigned char key[AES_BLOCK_SIZE];
    std::memcpy(key, key_str.data(), AES_BLOCK_SIZE);

    std::vector<unsigned char> encrypted = encrypt(std::vector<unsigned char>(plaintext.begin(), plaintext.end()), key);
    std::vector<unsigned char> decrypted = decrypt(encrypted, key);

    std::cout << "Plaintext: " << plaintext << std::endl;
    std::cout << "Encrypted: ";
    for (unsigned char c : encrypted) {
        std::cout << std::hex << static_cast<int>(c) << " ";
    }
    std::cout << std::endl;
    std::cout << "Decrypted: " << std::string(decrypted.begin(), decrypted.end()) << std::endl;

    return 0;
}
  1. 编译代码:
g++ crypto_example.cpp -o crypto_example -lcrypto
  1. 运行编译后的程序:
./crypto_example

这个示例使用了 AES 加密算法进行加密和解密。你可以根据需要选择其他加密算法。请注意,这个示例仅用于演示目的,实际应用中可能需要考虑更多的安全因素,如密钥管理、填充模式等。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo6@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram