[js] 文档加密

功能

文档树文档加密(非真正的加密)

注意: 该代码并不会加密原文,只是打开文档需要输入密码而已,且是前端加密,专业人员可以通过访问 js 源码分析出密码,因此请勿用于重要信息的保密!

使用说明

1 文档树右键选择加密/取消加密即可

image.png

2 查看所有加密文档(把下面的代码粘贴到任意文档中即可)

{{//!js_esc_newline_return (async ()=>{_esc_newline_ const ids = await fetchSyncPost("/api/file/getFile", {path:'/data/storage/encrypted_ids.json'});_esc_newline_ const result = await fetchSyncPost('/api/query/sql', { "stmt":`select id, content from blocks where id in( ${ids.map(item=>`'${item}'`).join(',')})` });_esc_newline_ const timer=setInterval(()=> {_esc_newline_ if(!item.querySelector('.protyle-wysiwyg__embed')) return;_esc_newline_ clearInterval(timer);_esc_newline_ if(!result || !result.data) return;_esc_newline_ result.data.forEach((row)=>{_esc_newline_ item.querySelector(`.protyle-wysiwyg__embed[data-id="${row.id}"]`).innerHTML = row.content;_esc_newline_ });_esc_newline_ });_esc_newline_ return ids;_esc_newline_})();}}

3 注意:暂不支持文件夹,不过可以通过先获取文件夹所有文档的 id 后放入/data/storage/encrypted_ids.json 文件中实现

4 所有文档共用一个密码,一个解密所有都解密(暂不支持对单个文档单独设置密码)

5 参数 const pw = '12345123abcde45667890'; 是解密密码,前中后各 5 个字符的干扰码,所以你的真实密码在两边,可通过修改 getRealPw 函数的默认参数,修改干扰码个数,所以默认密码是 123456

6 参数 const expireTime = 0; 是解密后的过期时间,单位秒,0 代表不过期,即直到下次刷新页面前一直有效

7 加密的文档 id 存储在 /data/storage/encrypted_ids.json 文件中

代码

https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/%E5%8A%A0%E5%AF%86%E6%96%87%E6%A1%A3.js

效果

image.png

image.png

【免责声明】

由于涉及文件隐私或保密,请不要对重要信息使用该功能,使用前请做好备份工作,由此带来的任何后果自负!!!均与作者及代码无关!!!

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    24771 引用 • 101862 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    133 引用 • 882 回帖
1 操作
wilsons 在 2025-03-19 21:58:30 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • wilsons 1

    已修复,用新代码试试

    0.0.2 修复偶发显示原文的 bug;默认密码框自动获取焦点;默认过期时间改为 1 秒

    为什么默认过期时间改为 1 秒?

    因为所有文档共用一个密码,如果默认不过期,当有一个文档解密后,用户再加密其他文档,在无刷新的情况下,打开刚加密的文档并不要求输入密码,这容易给用户错觉是 bug。

  • 其他回帖
  • wilsons 1

    @CongSec 刚修复了嵌入块显示 bug 问题,建议更新。

  • 电脑端和平板端测试下没有问题,移动端打开不知道为什么好像有时候还是会显示原文

    1 回复
  • Sakurarinkos 1 评论 via Android

    有点意思,有点担心,会不会出现一些奇奇怪怪的 bug

    哈哈哈,你的担心是对的,发现了再反馈,目前只想到,加载文档和预览及嵌入块,新窗口打开,其他情况是否也会显示原文还没考虑到。
    wilsons
wilsons
人生最大的敌人是自己,战胜自己,才能超越一切。

推荐标签 标签

  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 156 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    409 引用 • 3587 回帖 • 1 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖 • 1 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖 • 1 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 175 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 75 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 45 关注
  • danl
    164 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 655 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    171 引用 • 3842 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 13 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 261 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 545 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    169 引用 • 1527 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 545 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9389 引用 • 42799 回帖 • 112 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 819 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    586 引用 • 3538 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    950 引用 • 943 回帖 • 1 关注
  • OnlyOffice
    4 引用 • 23 关注