中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中string庫對字符串的加密解密

發布時間:2024-10-09 18:49:20 來源:億速云 閱讀:97 作者:小樊 欄目:編程語言

在C++中,你可以使用<string>庫來處理字符串,但它本身并不提供加密和解密的直接方法。為了實現字符串的加密和解密,你需要使用其他庫,如OpenSSL或Crypto++。

下面是一個使用OpenSSL庫進行AES加密和解密的示例:

首先,確保你已經安裝了OpenSSL庫。然后,你可以使用以下代碼進行加密和解密:

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

// AES加密函數
std::string aes_encrypt(const std::string& plaintext, const std::string& key) {
    AES_KEY enc_key;
    AES_set_encrypt_key(reinterpret_cast<const unsigned char*>(key.c_str()), 256, &enc_key);

    std::string ciphertext(plaintext.size() + AES_BLOCK_SIZE, '\0');
    AES_cbc_encrypt(reinterpret_cast<const unsigned char*>(plaintext.c_str()),
                    reinterpret_cast<unsigned char*>(&ciphertext[0]),
                    plaintext.size(), &enc_key, AES_BLOCK_SIZE, nullptr);

    return ciphertext;
}

// AES解密函數
std::string aes_decrypt(const std::string& ciphertext, const std::string& key) {
    AES_KEY dec_key;
    AES_set_decrypt_key(reinterpret_cast<const unsigned char*>(key.c_str()), 256, &dec_key);

    std::string plaintext(ciphertext.size(), '\0');
    AES_cbc_encrypt(reinterpret_cast<const unsigned char*>(ciphertext.c_str()),
                    reinterpret_cast<unsigned char*>(&plaintext[0]),
                    ciphertext.size(), &dec_key, AES_BLOCK_SIZE, nullptr);

    // 去除填充
    plaintext.erase(std::remove(plaintext.begin(), plaintext.end(), '\0'), plaintext.end());

    return plaintext;
}

int main() {
    std::string plaintext = "Hello, World!";
    std::string key = "0123456789abcdef";  // 16字節密鑰

    std::string ciphertext = aes_encrypt(plaintext, key);
    std::cout << "Encrypted text: " << ciphertext << std::endl;

    std::string decrypted_text = aes_decrypt(ciphertext, key);
    std::cout << "Decrypted text: " << decrypted_text << std::endl;

    return 0;
}

注意:

  1. 這個示例使用了AES加密算法和CBC模式。你可以根據需要選擇其他加密算法和模式。
  2. 密鑰的長度必須與所選加密算法的要求相匹配。在這個例子中,我們使用了256位的密鑰。
  3. 在解密后,我們需要去除填充(PKCS#7填充)。這個示例中的填充去除方法可能不適用于所有情況,你可能需要根據你的具體需求進行調整。
  4. 請確保在使用OpenSSL庫之前已經正確安裝并配置了它。

如果你不想使用OpenSSL庫,你還可以考慮使用Crypto++庫,它提供了更豐富的加密和解密功能。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

龙泉市| 罗田县| 乐亭县| 延川县| 石嘴山市| 竹北市| 镇坪县| 黎平县| 塔河县| 西丰县| 共和县| 永春县| 尼勒克县| 广元市| 临城县| 崇州市| 如东县| 德阳市| 洛隆县| 通榆县| 库尔勒市| 黎川县| 广州市| 丰宁| 元氏县| 洞头县| 虞城县| 玛多县| 出国| 南投市| 云龙县| 哈巴河县| 余庆县| 靖远县| 三台县| 株洲县| 大渡口区| 五莲县| 临猗县| 彭阳县| 五华县|