使用nodejs实现ed25519的公钥加密和私钥解密

主要使用了 ed25519 库

加解密和验证代码

// Common.js and ECMAScript Modules (ESM)
import * as ed from '@noble/ed25519';
// If you're using single file, use global variable instead: `window.nobleEd25519`

const verifyEd = async function (prikey, pubkey) {
    console.log("你输入的私钥是:" + prikey)
    console.log("环境变量中的公钥是:" + pubkey)

    // ====================
    // 新私钥开始
    // ====================
    // const newPrivateKey = ed.utils.randomPrivateKey();
    // const privateKeyStr = Buffer.from(newPrivateKey).toString('base64');
    // console.log("new privateKey=>", privateKeyStr)
    // ====================
    // 新私钥结束
    // ====================
  
    const privateKeyStr = prikey

    const privateKey = Buffer.from(privateKeyStr, 'base64');
    // console.log("parsed privateKey=>", privateKey)

    // ====================
    // 新公钥开始
    // ====================
    // const newPublicKey = await ed.getPublicKey(privateKey);
    // const publicKeyStr = Buffer.from(newPublicKey).toString('base64');
    // console.log("new publicKey=>", publicKeyStr)
    // ====================
    // 新公钥结束
    // ====================
  
    const publicKeyStr = pubkey

    const publicKey = Buffer.from(publicKeyStr, 'base64');
    // console.log("parsed publicKey=>", publicKey)

    try {
        const valiPass = "123456";
        const message = Uint8Array.from(valiPass, x => x.charCodeAt(0))
        // const messageStr = Buffer.from(message).toString('base64');
        // console.log("校验密码:", valiPass)

        const signature = await ed.sign(message, privateKey);
        const isValid = await ed.verify(signature, message, publicKey);
        // console.log("验证结果:", isValid ? "有效" : "无效")
        return isValid;
    } catch (e) {
        console.warn("校验失败,请检查密码", e)
        return false;
    }
}

const privateKeyStr = "prikey";
const publicKeyStr = "pubkey"
const valiResult = verifyEd(privateKeyStr, publicKeyStr)
valiResult.then(function(item){
    console.log("item=>", item)
})

Terwer...大约 1 分钟前端开发ed25519nodepassword私钥使用实现加密解密
vite使用nodeJS内置的模块

vite使用nodeJS内置的模块

问题背景

Vite 是一个新工具,有助于快速启动和简化前端 Javascript 开发。 Vite 相对于 Parcel 等其他解决方案的主要优势是速度更快,并将编译限制为对依赖项的一次性操作,保持源代码不受影响(如果您不需要,因为 JSX 或 typescript)。

vite-下一代前端工具

它由两个主要部分组成:

  • 一个通过原生 ES 模块为您的源文件提供服务的开发服务器,具有丰富的内置功能和惊人的快速热模块替换 (HMR)。

  • 一个构建命令,将您的代码与 Rollup 捆绑在一起,预先配置为输出高度优化的静态资产以用于生产。
    它与 Snowpack 非常相似,并且这两个项目具有相同的好处。


Terwer...大约 4 分钟前端开发内置模块vitenodenodejsfetchnode-fetch
pnpm安装electron报错404解决方案

自定义镜像地址和版本解决

pnpm config set registry https://registry.npmmirror.com/

pnpm config set electron_mirror=https://cdn.npmmirror.com/binaries/electron/ 
pnpm config set electron_custom_dir=14.2.5

Terwer...小于 1 分钟经验分享pnpmnpmnodejs404electron
node发送邮件

代码

Mail.mjs

import nodemailer from "nodemailer";

export default async function sendMail(to, title, msg) {
    // 创建transporter
    const transporter = nodemailer.createTransport({
        host: "smtp.qq.com", // 邮箱的smtp地址
        auth: {
            user: "tangyouwei@qq.com", // 邮箱的smtp地址
            pass: process.env.QQMAIL_SMTP_TOKEN // 邮箱授权码
        }
    });

    // 配置邮件信息
    const mailInfo = {
        from: "tangyouwei@qq.com",
        to: to,
        subject: title, // Subject line
        text: "仓库容量邮件通知", // plain text body
        html: msg, // html body
    };

    // 发送邮件
    const ret = await transporter.sendMail(mailInfo);
    console.log("send mail finish to " + to);
    return ret;
}

Terwer...大约 1 分钟前端开发邮箱地址邮件nodemail
Node知识架构结构分析

Node知识结构

  • Node安装与配置,使用NPM
  • 使用nvm(Node Version Manager)管理Node与npm
  • nvm配置与重要指令
  • Node事件与回调机制
  • Node异步IO模型
  • Node的单线程模型
  • Node模块
  • npm使用方式
  • package.json详解
  • 全局安装与局部安装方式
  • npm重要功能详解
  • Node异步编程详解
  • Node流分析
  • 输入与输出
  • Node网络功能
  • Node的控制台
  • 事件循环机制
  • Node调试
  • 使用exports对象
  • Node操作文件系统
  • Buffer详解
  • Node的错误处理模型
  • 使用Node访问MogoDB
  • 使用Node访问MySQL
  • 使用Node访问Redis
  • 中间件详解
  • Node Web服务器详解
  • Websocket在Node中的实现方式
  • Websocket数据传输
  • SocketIO详解
  • Express或KOA全功能详解

Terwer...小于 1 分钟Node新思路新笔记node
Node宏观介绍与应用场景分析

Node的起源

NodeJS最开始基于Google的v8引擎,后来逐渐发展为NodeJS。

V8:https://v8.dev/

NodeJS依托于JavaScript,并且解决了js的很多设计缺陷。

Node的特点

NodeJS底层采用了异步非阻塞的架构,Reactor编程模型。

NodeJS是单线程的,但是性能很好。

问题


Terwer...小于 1 分钟Node新思路新笔记nodejs
NodeJS创建一个空文件

NodeJS创建一个空文件

创建一个空文件并返回:

var fd = fs.openSync(filepath, 'w');

Terwer...小于 1 分钟经验分享实用技巧nodenodejsfile