argon2Test
This commit is contained in:
commit
357cdf0684
39
.gitignore
vendored
Normal file
39
.gitignore
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
# Build files
|
||||||
|
build/
|
||||||
|
.cache/
|
||||||
|
|
||||||
|
# OS generated files
|
||||||
|
Thumbs.db
|
||||||
|
.DS_Store
|
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
|||||||
|
2.7.18
|
46
background/main.js
Normal file
46
background/main.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
const { app, BrowserWindow, ipcMain } = require('electron')
|
||||||
|
const { argon2Test } = require('./service/argon2.js')
|
||||||
|
|
||||||
|
function createWindow () {
|
||||||
|
// 创建浏览器窗口
|
||||||
|
const win = new BrowserWindow({
|
||||||
|
width: 800,
|
||||||
|
height: 600,
|
||||||
|
webPreferences: {
|
||||||
|
nodeIntegration: true,
|
||||||
|
contextIsolation: false,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 加载index.html文件
|
||||||
|
win.loadFile('index.html')
|
||||||
|
|
||||||
|
// 打开开发者工具
|
||||||
|
// win.webContents.openDevTools()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注册IPC接口处理程序
|
||||||
|
ipcMain.handle('argon2-test', async (event, inputString) => {
|
||||||
|
// 调用argon2Test方法处理输入字符串
|
||||||
|
return await argon2Test(inputString);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 当Electron完成初始化并准备创建浏览器窗口时调用此方法
|
||||||
|
app.whenReady().then(() => {
|
||||||
|
createWindow()
|
||||||
|
|
||||||
|
// macOS中点击Dock图标并且没有其他窗口打开时,重新创建一个窗口
|
||||||
|
app.on('activate', () => {
|
||||||
|
if (BrowserWindow.getAllWindows().length === 0) {
|
||||||
|
createWindow()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 当所有窗口关闭时退出应用
|
||||||
|
app.on('window-all-closed', () => {
|
||||||
|
// 在macOS上,除非用户用Cmd + Q确定退出,否则绝大部分应用及其菜单栏会保持激活
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
|
app.quit()
|
||||||
|
}
|
||||||
|
})
|
23
background/service/argon2.js
Normal file
23
background/service/argon2.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
const argon2 = require('argon2');
|
||||||
|
|
||||||
|
// argon2Test方法:接收一个字符串,返回其argon2哈希值
|
||||||
|
async function argon2Test(inputString) {
|
||||||
|
try {
|
||||||
|
// 使用默认配置生成argon2哈希
|
||||||
|
const hash = await argon2.hash(inputString);
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
hash: hash
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('argon2哈希计算失败:', error);
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
error: error.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
argon2Test
|
||||||
|
};
|
119
index.html
Normal file
119
index.html
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Hello Electron!</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
margin: 0;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.argon2-form {
|
||||||
|
margin: 20px auto;
|
||||||
|
max-width: 500px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
input[type="text"] {
|
||||||
|
padding: 10px;
|
||||||
|
width: 70%;
|
||||||
|
margin-right: 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
background-color: #45a049;
|
||||||
|
}
|
||||||
|
.result {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 3px;
|
||||||
|
text-align: left;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
.success {
|
||||||
|
background-color: #dff0d8;
|
||||||
|
border: 1px solid #d6e9c6;
|
||||||
|
color: #3c763d;
|
||||||
|
}
|
||||||
|
.error {
|
||||||
|
background-color: #f2dede;
|
||||||
|
border: 1px solid #ebccd1;
|
||||||
|
color: #a94442;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello Electron 11!</h1>
|
||||||
|
<p>这是一个使用Node.js 12和Electron 11初始化的项目。</p>
|
||||||
|
<div>
|
||||||
|
<p>当前Node.js版本: <script>document.write(process.version)</script></p>
|
||||||
|
<p>当前Electron版本: <script>document.write(process.versions.electron)</script></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Argon2哈希测试表单 -->
|
||||||
|
<div class="argon2-form">
|
||||||
|
<h2>Argon2哈希测试</h2>
|
||||||
|
<input type="text" id="inputText" placeholder="输入要哈希的文本" />
|
||||||
|
<button id="hashButton">生成哈希</button>
|
||||||
|
<div id="result" class="result"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const { ipcRenderer } = require('electron');
|
||||||
|
|
||||||
|
document.getElementById('hashButton').addEventListener('click', async () => {
|
||||||
|
const inputText = document.getElementById('inputText').value;
|
||||||
|
const resultElement = document.getElementById('result');
|
||||||
|
|
||||||
|
if (!inputText) {
|
||||||
|
resultElement.innerHTML = '请输入文本';
|
||||||
|
resultElement.className = 'result error';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示加载状态
|
||||||
|
resultElement.innerHTML = '正在生成哈希...';
|
||||||
|
resultElement.className = 'result';
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 调用主进程的argon2-test接口
|
||||||
|
const result = await ipcRenderer.invoke('argon2-test', inputText);
|
||||||
|
|
||||||
|
if (result.success) {
|
||||||
|
resultElement.innerHTML = `成功生成哈希:<br>${result.hash}`;
|
||||||
|
resultElement.className = 'result success';
|
||||||
|
} else {
|
||||||
|
resultElement.innerHTML = `生成哈希失败:<br>${result.error}`;
|
||||||
|
resultElement.className = 'result error';
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
resultElement.innerHTML = `发生错误:<br>${error.message}`;
|
||||||
|
resultElement.className = 'result error';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 允许按Enter键提交表单
|
||||||
|
document.getElementById('inputText').addEventListener('keypress', (e) => {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
document.getElementById('hashButton').click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
1046
package-lock.json
generated
Normal file
1046
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
16
package.json
Normal file
16
package.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "electron11",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "background/main.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "electron ."
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"description": "",
|
||||||
|
"dependencies": {
|
||||||
|
"argon2": "^0.28.5",
|
||||||
|
"electron": "^11.5.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user