1 Star 0 Fork 0

rocket049 / mycrypto-qt

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.go 6.16 KB
一键复制 编辑 原始数据 按行查看 历史
package main
import (
"os"
"path/filepath"
"gitee.com/rocket049/mycrypto"
"github.com/rocket049/gettext-go/gettext"
"github.com/therecipe/qt/gui"
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/widgets"
)
var T = gettext.T
func MainDialog() int {
gettext.BindTextdomain("mycryptoqt", "locale.zip", localeData)
gettext.Textdomain("mycryptoqt")
app := widgets.NewQApplication(len(os.Args), os.Args)
window := widgets.NewQDialog(nil, core.Qt__Window)
window.SetWindowTitle(T("MyCrypto QT"))
box := widgets.NewQVBoxLayout()
font := gui.NewQFont2("", 18, 16, false)
buttonEnc := widgets.NewQPushButton2(T("Encrypt File By AES256"), window)
buttonEnc.SetFont(font)
box.AddWidget(buttonEnc, 1, 0)
buttonEnc.ConnectClicked(func(b bool) {
EncryptDialog()
})
buttonDec := widgets.NewQPushButton2(T("Decrypt File By AES256"), window)
buttonDec.SetFont(font)
box.AddWidget(buttonDec, 1, 0)
buttonDec.ConnectClicked(func(b bool) {
DecryptDialog()
})
window.SetLayout(box)
app.SetActiveWindow(window)
window.Show()
return app.Exec()
}
func DecryptDialog() {
window := widgets.NewQDialog(nil, core.Qt__Window)
window.SetWindowTitle(T("Decrypt File By AES256"))
box := widgets.NewQGridLayout(window)
var pwd, name string
var err error
msgLabel := widgets.NewQLabel2(T("Message Box"), window, core.Qt__Widget)
box.AddWidget3(msgLabel, 0, 0, 1, 2, 0)
label1 := widgets.NewQLabel2(T("Input:"), window, core.Qt__Widget)
box.AddWidget(label1, 1, 0, 0)
edit1 := widgets.NewQLineEdit(window)
edit1.SetPlaceholderText(T("Double click to select file."))
edit1.SetMinimumWidth(400)
box.AddWidget(edit1, 1, 1, 0)
edit1.ConnectMouseDoubleClickEvent(func(e *gui.QMouseEvent) {
path1 := widgets.QFileDialog_GetOpenFileName(window, T("Select a file to encrypt"), "", "", "", widgets.QFileDialog__ReadOnly)
if len(path1) == 0 {
return
}
for {
var b bool
pwd = widgets.QInputDialog_GetText(window, T("File Password"), T("Password:"), widgets.QLineEdit__Password, "", &b, core.Qt__Dialog, core.Qt__ImhHiddenText)
if b == false {
msgLabel.SetText(T("Message Box"))
edit1.SetText("")
pwd = ""
name = ""
break
}
name, err = mycrypto.GetFilename(path1, pwd)
if err == nil {
msgLabel.SetText(T("FileName:") + name)
edit1.SetText(path1)
break
} else {
widgets.QMessageBox_About(window, T("Error Password!"), T("Error Password!"))
}
}
})
label2 := widgets.NewQLabel2(T("Output:"), window, core.Qt__Widget)
box.AddWidget(label2, 2, 0, 0)
edit2 := widgets.NewQLineEdit(window)
edit2.SetPlaceholderText(T("Double click to select directory."))
edit2.SetMinimumWidth(400)
box.AddWidget(edit2, 2, 1, 0)
edit2.ConnectMouseDoubleClickEvent(func(e *gui.QMouseEvent) {
path1 := widgets.QFileDialog_GetExistingDirectory(window, T("Select a file to encrypt"), "", widgets.QFileDialog__ShowDirsOnly)
edit2.SetText(path1)
})
button1 := widgets.NewQPushButton2(T("Decrypt"), window)
box.AddWidget3(button1, 3, 0, 1, 2, 0)
button1.ConnectClicked(func(b bool) {
src := edit1.Text()
dst := edit2.Text()
if pwd == "" || name == "" || src == "" || dst == "" {
return
}
dst = filepath.Join(dst, name)
err := mycrypto.DecryptoFile(src, dst, pwd)
if err != nil {
widgets.QMessageBox_About(window, T("Error"), err.Error())
window.Close()
} else {
widgets.QMessageBox_About(window, T("Successful!"), T("Successful!"))
window.Close()
}
})
window.SetLayout(box)
window.Show()
}
func EncryptDialog() {
window := widgets.NewQDialog(nil, core.Qt__Window)
window.SetWindowTitle(T("Encrypt File By AES256"))
box := widgets.NewQGridLayout(window)
labelMode := widgets.NewQLabel2(T("CryptoMode:"), window, core.Qt__Widget)
box.AddWidget(labelMode, 0, 0, 0)
comb := widgets.NewQComboBox(window)
comb.AddItems([]string{"AES CFB", "AES CTR"})
box.AddWidget(comb, 0, 1, 0)
labelPwd := widgets.NewQLabel2(T("Password:"), window, core.Qt__Widget)
box.AddWidget(labelPwd, 1, 0, 0)
editPwd := widgets.NewQLineEdit(window)
editPwd.SetEchoMode(widgets.QLineEdit__Password)
box.AddWidget(editPwd, 1, 1, 0)
labelCfm := widgets.NewQLabel2(T("Confirm:"), window, core.Qt__Widget)
box.AddWidget(labelCfm, 2, 0, 0)
editCfm := widgets.NewQLineEdit(window)
editCfm.SetEchoMode(widgets.QLineEdit__Password)
box.AddWidget(editCfm, 2, 1, 0)
label1 := widgets.NewQLabel2(T("Input:"), window, core.Qt__Widget)
box.AddWidget(label1, 3, 0, 0)
edit1 := widgets.NewQLineEdit(window)
edit1.SetPlaceholderText(T("Double click to select file."))
edit1.SetMinimumWidth(400)
box.AddWidget(edit1, 3, 1, 0)
edit1.ConnectMouseDoubleClickEvent(func(e *gui.QMouseEvent) {
path1 := widgets.QFileDialog_GetOpenFileName(window, T("Select a file to encrypt"), "", "", "", widgets.QFileDialog__ReadOnly)
edit1.SetText(path1)
})
label2 := widgets.NewQLabel2(T("Output:"), window, core.Qt__Widget)
box.AddWidget(label2, 4, 0, 0)
edit2 := widgets.NewQLineEdit(window)
edit2.SetPlaceholderText(T("Double click to select directory."))
edit2.SetMinimumWidth(400)
box.AddWidget(edit2, 4, 1, 0)
edit2.ConnectMouseDoubleClickEvent(func(e *gui.QMouseEvent) {
path1 := widgets.QFileDialog_GetExistingDirectory(window, T("Select a file to encrypt"), "", widgets.QFileDialog__ShowDirsOnly)
edit2.SetText(path1)
})
button1 := widgets.NewQPushButton2(T("Encrypt"), window)
box.AddWidget3(button1, 5, 0, 1, 2, 0)
button1.ConnectClicked(func(b bool) {
src := edit1.Text()
dst := filepath.Join(edit2.Text(), filepath.Base(src)+".e")
pwd := editPwd.Text()
cfm := editCfm.Text()
if pwd == "" || cfm == "" || src == "" || dst == edit2.Text() {
return
}
if pwd != cfm {
widgets.QMessageBox_About(window, T("Passwords are inconsistent"), T("Passwords are inconsistent"))
return
}
var err error
switch comb.CurrentIndex() {
case 0:
err = mycrypto.CfbEncryptoToFile(src, dst, pwd)
case 1:
err = mycrypto.EncryptoToFile(src, dst, pwd)
}
if err != nil {
widgets.QMessageBox_About(window, T("Error"), err.Error())
window.Close()
} else {
widgets.QMessageBox_About(window, T("Successful!"), T("Successful!"))
window.Close()
}
})
window.SetLayout(box)
window.Show()
}
func main() {
os.Exit(MainDialog())
}
1
https://gitee.com/rocket049/mycrypto-qt.git
git@gitee.com:rocket049/mycrypto-qt.git
rocket049
mycrypto-qt
mycrypto-qt
master

搜索帮助