Skip to content
/ XiangYue Public

想曰 - 文本加密让你想曰就曰,曰你所想。 | Want to say - Text encryption allows you to express what you want to say and convey your thoughts.

License

Notifications You must be signed in to change notification settings

fzxx/XiangYue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

想曰

GitHub stars GitHub forks GitHub last commit 已关闭 Issues 许可证 级联算法 多种密文

想曰(yuē) 是基于现代加密技术的文本加密工具,使用多算法级联加密方案,确保数据在本地完成加密/解密,保护隐私安全。

🌟 特点

  • ㊙️密文:支持 中文 / Base64 / Emoji / 零宽 密文
  • 🔐密钥PBKDF2-SHA256 + HKDF-SHA256,有效抵御暴力破解
  • 🔒级联算法:采用 AES256-CTRChaCha20-Poly1305-IETF 级联加密,安全性极高
  • 📄数据:所有操作在本地完成,数据不离开设备

📋密文示例

以下密文使用 默认密码 加密

中文密文
雷柜箱慕虎斜灯无羞站愁层梁条人岂解显无靠走峰抬旋吵所扶诉旗晃接勤哈袜方错美过晕盆拧奔随梦疏清跃蝶拍说海鸟房清烟月急压非片抖呱棒千说呱海晨也梯读盘压太甜旗狐向画颗得池厨又沉叉托茶暖峦虚小料叹门跨桂已闹李竖咯棒愿咯迷首馆
Base64 密文
J7ni11NnCUEe1+GtZcIWoJcKNgzsyN8K8BQBKnDn/1mLPkv2ul1VUcedyoIgZpXcNUKfy3HhZI6soaa54UcqLtJs52caSPuVo3EBOYvMqYS2
Emoji 密文
🧕🛕🐱🌉🛐🤴🌄🏸🚆🎇🤴🦈🛸🧭🚡💒🤑🚤🔁🚬💰🍣⛴️🎽🔣😚❣️♻️🍖🧺🚨⛪️🛁📞🍤👦🍊🦘🦀🚅💓🏏🚪☪️😠💲🦊🧭🐠🎻🪣🚢⏲️⏯️😒🗻🧂🚠👻💗🪲🦽🐍🚲⏭️⏸️😍🛖🫐🛫🥓👴🐪👰⏰🏬🍱🤎🧄ℹ️⚾️🉑🚐🕎🐪😜🦖🚭🦐👽🧎🍢🥦🧘🐄🥖🔢🏃🎸🍤♎️🌆🐆🌋🤍☮️🫓🐑
零宽密文(可藏在中文、网址、提取码、英文、Base64等可见字符中)

https://github.com/fzxx/⁤⁡⁣⁢⁡⁤⁤⁢‍⁣‍⁣⁡‍⁣⁠⁡⁡⁢͏⁡⁣⁤͏⁡⁤⁡⁤⁣⁣⁣⁤‍⁣⁤⁣⁢⁣⁤⁤⁢⁣⁠؜⁢⁤⁤⁡⁤⁤⁤⁤⁤⁢⁢‍⁤⁢⁣⁢⁢⁣⁤‍⁤͏⁡⁤⁢⁢⁠⁤؜⁣⁤⁣⁢⁤⁤⁤⁤⁡⁢⁣⁢⁤⁣⁡⁤⁢⁢⁢⁤‍⁤⁢⁣⁢⁤⁡⁠⁠؜⁢⁣⁣⁣⁤⁡‌⁤⁤⁣⁤⁤⁢⁣⁢⁣⁢⁢͏⁢‍⁤⁤⁠⁡⁡⁡⁣‌⁣⁡⁡⁢⁢⁡⁢⁢‍⁣⁢⁢⁢͏⁠⁡⁣⁤⁤͏⁢⁢⁡⁣⁣⁤‌XiangYue

🖥️在线与离线使用

在线页面 免尴尬页面 Release

🔄️更新日志

更新日志

🛡️ 技术细节

加密流程

明文 → Deflate压缩 → AES256-CTR加密 → ChaCha20-Poly1305加密 → Base64编码 → 密文
                                                             ↳ 映射中文/Emoji/零宽 → 密文

密钥派生流程

密码 + 随机盐(16字节) 
    ↳ PBKDF2-SHA256(50万次迭代) → HKDF-SHA256
                                   ↳ 派生AES-CTR密钥(256位)
                                   ↳ 派生ChaCha20密钥(256位)

数据结构

[中文、Emoji、零宽/Base64 密文]
     ↳ 映射→解码/解码
             ↳[二进制数据]
                   ↳ 前16字节 → 盐值(Salt)
                   ↳ 接下来12字节 → ChaCha20的Nonce
                   ↳ 剩余部分 = ChaCha20密文
                                  ↳ 解密 → 前16字节 → AES-CTR的Nonce
                                  ↳ 剩余部分 = AES-CTR密文
                                                 ↳ 解密 → Deflate解压 → [明文]

安全要素

要素 长度 方式 用途
加密算法 - 级联 增强数据安全性
密钥派生 - PBKDF2 + HKDF 防止暴力破解、彩虹表攻击
盐 (Salt) 16 字节 随机生成 确保每次加密生成唯一密钥
CTR_Nonce 16 字节 随机生成 初始计数器值
ChaCha20_Nonce 12 字节 随机生成 一次性随机数

😕 疑问

发送给多人如何管理多个密码?
  • 使用可靠的密码管理器,例如:KeePass、KeePassXC、Bitwarden
少量文字也会生成较长的文本,能缩短吗?
  • 因为追求安全性,所以添加了随机盐、Nonce等参数,密文中存储这些参数导致的;去掉参数追求短密文会削弱安全性,所以无短密文计划。
未来还会添加的算法?
  • 暂定密钥派生使用Argon2id,加密算法使用三种进行级联。
为什么不使用PBKDF2-SHA512?
  • 如果使用PBKDF2-SHA512迭代50万次,加密短文本也会感到明显的延迟,而PBKDF2-SHA256能平衡速度与安全。
感觉加密/解密慢?
  • PBKDF2迭代50万次所以慢,是正常现象;短文本理应1秒内加/解密完成,5M的文本3秒左右,这是可以接受的速度。
支持加密/解密的最大容量?
  • 不影响速度的情况下,建议5M以下(测试支持50M+);超大的文本请使用压缩包或者其它方式加密。
可以给密文再次加密?
  • 明文 → emoji密文 → 中文密文 → ...... 可以这样无限套娃,但不会增加安全性,安全性取决于你的密码,因此不建议这样做。
经过某些软件发送密文后,解密错误?
  • 是因为某些软件喜欢折叠聊天内容,或者发送过长的密文被截断,建议你检查密文的完整性;Eomij密文可能因为不同设备内置的表情不一导致解密错误,零宽密文有被某些平台过滤字符的可能。
零宽密文只有两个字符?可见字符可以自定义?
  • 密文总长度没有变,只是转为不可见字符藏在两个可见字符中间,是为了让人知道密文在哪,方便复制。
  • 可以,只需手动替换密文中的可见字符(零宽密文只是对人不可见,机器是秒识别的,但识别不代表能解密)。

📖 许可证

想曰 - 私下研究专用许可

libsodium.js - ISC 许可证

About

想曰 - 文本加密让你想曰就曰,曰你所想。 | Want to say - Text encryption allows you to express what you want to say and convey your thoughts.

Topics

Resources

License

Stars

Watchers

Forks