C++在Linux中的加密解密操作

发布时间:2024-12-20 09:27:52 作者:小樊
来源:亿速云 阅读:78

在Linux中,使用C++进行加密和解密操作通常涉及到一些加密库,如OpenSSL、Crypto API等

  1. 首先,确保已经安装了OpenSSL库。在大多数Linux发行版中,可以使用以下命令安装:

    对于Debian/Ubuntu系统:

    sudo apt-get install libssl-dev
    

    对于Fedora/CentOS/RHEL系统:

    sudo yum install openssl-devel
    
  2. 创建一个名为crypto_example.cpp的C++文件,并添加以下代码:

#include <iostream>
#include <openssl/aes.h>
#include <openssl/rand.h>
#include <string.h>

std::string encrypt(const std::string &plaintext, const std::string &key) {
    AES_KEY aesKey;
    AES_set_encrypt_key(reinterpret_cast<const unsigned char*>(key.c_str()), key.size() * 8, &aesKey);

    int ciphertext_len = AES_block_size + plaintext.size();
    std::string ciphertext(ciphertext_len, '\0');

    AES_encrypt(reinterpret_cast<const unsigned char*>(plaintext.c_str()),
                reinterpret_cast<unsigned char*>(&ciphertext[0]),
                &aesKey);

    return ciphertext;
}

std::string decrypt(const std::string &ciphertext, const std::string &key) {
    AES_KEY aesKey;
    AES_set_decrypt_key(reinterpret_cast<const unsigned char*>(key.c_str()), key.size() * 8, &aesKey);

    int plaintext_len = AES_block_size + ciphertext.size();
    std::string plaintext(plaintext_len, '\0');

    AES_decrypt(reinterpret_cast<const unsigned char*>(ciphertext.c_str()),
                reinterpret_cast<unsigned char*>(&plaintext[0]),
                &aesKey);

    return plaintext;
}

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

    std::string encrypted = encrypt(plaintext, key);
    std::string decrypted = decrypt(encrypted, key);

    std::cout << "Plaintext: " << plaintext << std::endl;
    std::cout << "Encrypted: " << encrypted << std::endl;
    std::cout << "Decrypted: " << decrypted << std::endl;

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

注意:这个示例使用了AES-128加密算法。你可以根据需要更改密钥长度(例如,使用AES_set_encrypt_keyAES_set_decrypt_key函数的第二个参数)。同时,为了提高安全性,建议使用随机生成的密钥。在实际应用中,你可能还需要处理填充、错误处理和密钥管理等问题。

推荐阅读:
  1. linux如何查看历史命令
  2. linux中有哪些压缩命令

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

linux

上一篇:Linux下C++的STL容器使用

下一篇:Linux开发C++的持续集成方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》