Qtの基礎 - パケット
ナビゲーションに移動
検索に移動
概要
SSLを使用した暗号化
以下の例では、OpenSSLライブラリとQTCPSocketクラスを使用して、パケットを暗号化して送信している。
#include <QTcpSocket>
#include <QSslSocket>
#include <QSslKey>
#include <QSslCertificate>
#include <QFile>
// 暗号化
void encryptPacket(QByteArray &packet)
{
// OpenSSLライブラリの初期化
SSL_load_error_strings();
SSL_library_init();
// 公開鍵と秘密鍵を読み込む
QSslKey privateKey("server.key", QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
QSslCertificate publicKey("server.crt", QSsl::Pem);
// QSslSocketオブジェクトの生成
QSslSocket socket;
socket.setPrivateKey(privateKey);
socket.setLocalCertificate(publicKey);
socket.connectToHostEncrypted("example.com", 443);
// パケットの暗号化
packet = socket.encrypt(packet);
}
int main()
{
// パケットの生成
QByteArray packet = "Hello, world!";
// パケットの暗号化
encryptPacket(packet);
// 暗号化されたパケットの送信
QTcpSocket socket;
socket.connectToHost("example.com", 1234); // ホスト名とTCPポート番号の指定
socket.write(packet);
// 送信が完了するまで待機
socket.waitForBytesWritten();
return 0;
}