概要
Qtにおいて、ハッシュ値を求める手順を記載する。
ハッシュ値の求め方
MD5やSHA-256等のハッシュを求めるには、QCryptographicHashクラスのhashメソッドを使用する。
以下の例では、ラインエディットに入力した文字列から、MD4、MD5、SHA-1、SHA-256、SHA-512のハッシュ値を求めている。
また、サポートされているハッシュの詳細については、Qtの公式ドキュメントを参照すること。
// MainWindow.h
#pragma once
#include <QMainWindow>
namespace Ui {class MainWindow;}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
// MainWindow.cpp
#include <QCryptographicHash>
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QByteArray src = ui->lineEdit->text().toUtf8();
// MD4
QString md4 = QString(QCryptographicHash::hash(src, QCryptographicHash::Md4).toHex());
ui->label_md4->setText(md4);
// MD5
QString md5 = QString(QCryptographicHash::hash(src, QCryptographicHash::Md5).toHex());
ui->label_md5->setText(md5);
// SHA-1
QString sha1 = QString(QCryptographicHash::hash(src, QCryptographicHash::Sha1).toHex());
ui->label_sha1->setText(sha1);
// SHA-256
QString sha256 = QString(QCryptographicHash::hash(src, QCryptographicHash::Sha256).toHex());
ui->label_sha256->setText(sha256);
// SHA-512(長いので64文字で改行)
QString sha512 = QString(QCryptographicHash::hash(src, QCryptographicHash::Sha512).toHex());
QString sha512_disp = sha512.left(64) + QString::fromLocal8Bit("\n") + sha512.right(64);
ui->label_sha512->setText(sha512_disp);
}