gpt4 book ai didi

javascript - QML 和 RSA 加密

转载 作者:行者123 更新时间:2023-12-03 01:55:35 31 4
gpt4 key购买 nike

嗨,我正在尝试找到仅使用 js 和 qml 生成公钥和私钥的最佳方法。这还涉及点对点之间的消息加密和解密。

我找到了这个库: https://github.com/travist/jsencrypt/blob/master/bin/jsencrypt.js

但是使用为浏览器设计的库的问题是我似乎永远无法用

import filePath as JsRASCrypto

有谁对我如何让像这样的库正常工作或我可以实现这一目标的任何其他方式有任何建议吗?

谢谢

最佳答案

通过下载相当容易实现这一点 https://github.com/bricke/Qt-AES并将文件 qaesencryption.h 和 qaesencryption.cpp 添加到您的项目中,然后创建一个可以访问 QAESEncryption 方法的 Controller 类,并创建一些 Q_INVOKABLE 类型方法来处理加密,然后将 AES Controller 类公开给您的 QML 引擎

没问题

aes.h

#ifndef AES_H
#define AES_H

#include <QObject>

class AES : public QObject
{
Q_OBJECT
public:
explicit AES(QObject *parent = nullptr);
Q_INVOKABLE QVariant encrypt(QString plainText, QString key);


Q_INVOKABLE QVariant decrypt(QString encodedText, QString key);
signals:

public slots:
};

#endif // AES_H
<小时/>

aes.cpp

#include "aes.h"
#include "qaesencryption.h"

AES::AES(QObject *parent) : QObject(parent)
{

}

QVariant AES::encrypt(QString plainText, QString key)
{
QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB);
QByteArray encodedText = encryption.encode(plainText, key);
return QVariant::fromValue(encodedText);
}

QVariant AES::decrypt(QString encodedText, QString key)
{
QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB);
QByteArray decodedText = encryption.decode(encodedText, key);
return QVariant::fromValue(decodedText);
}

----

main.cpp

这里是注册 QML 类型的地方

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "aes.h"
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;


/* register AES class into QML */
qmlRegisterType<AES>("com.myapp.demo", 1, 0, "AES");


engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;

return app.exec();
}

----
主.qml--
import QtQuick 2.10
import QtQuick.Window 2.10
import com.myapp.demo 1.0

Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")

/* make an instance of AES */
AES {
id: aes
}

/* call invokable method */
Component.onCompleted: {
alert(aes.encrypt("testing encryption", "secretKey"))
}
}

希望这可以帮助那里的人解决问题

关于javascript - QML 和 RSA 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50253649/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com