【问题标题】:Decode and Encode text with openssl in Qt C++在 Qt C++ 中使用 openssl 解码和编码文本
【发布时间】:2015-12-09 11:28:08
【问题描述】:

我想在 C++ 应用程序和 PHP 页面之间创建通信。 我已经建立了 SSL 连接,但我也希望对消息进行加密。 例如,这是 PHP 代码:

$textToEncrypt = "my secret message";
$key = "AAAAAAAAAAAAAAAA";
$iv =  "BBBBBBBBBBBBBBBB";
$encrypted = openssl_encrypt($textToEncrypt, 'aes-256-cbc', $key, true, $iv);
echo $encrypted;

在 qt C++ 中我有:

void PHPTest::replyFinished(QNetworkReply *reply)
{
    QString answer = QString::fromUtf8(reply->readAll());
    //Now i have to decrypt "answer", it contains the text encrypted in php.
}

我的问题是:

  1. 如何在 QT/C++ 中使用 openssl lib 变量解密 “回答”?
  2. 如何在 QT/C++ 中使用 openssl lib 加密一些文本? (我将使用 openssl_decrypt 在 php 中对其进行解码)

【问题讨论】:

  • 如果你有一个 SSL 连接,你的消息将被自动加密(除非你做了一些真的愚蠢的事情,比如配置连接的两端来接受一个空密码套件) .为什么你认为你需要另一个层加密?
  • 我想通道ssl已经很确定了。谢谢你。假设我有一个未加密的频道,我很好奇如何在 C++ 中使用加密 opensll 的工具。谢谢
  • 一个固定的密钥和 IV 意味着你有一个静态的安全上下文(即,你重用它们)。那很糟。 PHP 的openssl_encrypt 通常也是错误的。您可能应该使用经过身份验证的加密,因为它提供 机密性和真实性。请参阅 OpenSSL wiki 上的 EVP Authenticated Encryption and Decryption

标签: php c++ qt encryption openssl


【解决方案1】:

如果您的 PHP 站点受 SSL 保护,并且您想通过 Qt 应用程序与其通信,您无需手动加密/解密任何内容。 SSL 为您完成。只需编写您的 SSL 客户端(以 http://doc.qt.io/qt-5/qtnetwork-securesocketclient-example.html 为例)并向服务器发出请求。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2014-01-08
  • 2019-03-29
  • 2014-04-23
相关资源
最近更新 更多