新功能:SinoCrypt加密 技术

体验地址:/sinocrypt

规则

  • 用户提供明文和密钥,可以加密并得到密文
  • 用户提供密文和密钥,可以解密并得到明文
  • 明文可以是任意长度(Unicode)字符串
  • 密钥可以是任意长度(Unicode)字符串
  • 密文是由汉语中最常使用的1024个汉字组成的字符串
  • 即便固定密钥和明文,每次加密仍然会生成不同的密文
  • 即便使用错误的密钥,仍有一定概率从密文中解密出有意义的内容
  • 在1024汉字之外的其他汉字,以及英文数字标点符号等,可以插入到密文中而不改变解密结果
  • 测试期间对明文和密文的长度做了最大限制

例子

  • encrypt("光复香港", "祖国万岁") => "影书近明无族表敌算喝你逃"
  • decrypt("光复香港", "影书近明无族表敌算喝你逃") => "祖国万岁"

技术

  • 基于ChaCha20,所用key和nonce均来自KDF(user_key+salt),其中user_key由用户提供(任意长度的Unicode字符串),salt为32bit真随机数
  • 自动切换gbk/utf8
  • 自动开启snappy压缩
  • 我司不对因使用此密码造成的任何后果负责
  • 算法的名字是临时起的
  • 源码在 https://github.com/thphd/2047/blob/master/sb1024/sb1024.py
( 由 作者 4月6日 编辑 )
7
4月6日 490 次浏览
7个评论
Ambulance 夫人必自侮,然後人侮之;家必自毀,而後人毀之;國必自伐,而後人伐之。

即便使用错误的密钥,仍有一定概率从密文中解密出有意义的内容

这个是什么原因?类似于MD5 Collision?

(站长答复:原文的意思是,使用错误的密钥,大多数时候将得到乱码,但有微小的概率碰到有意义的文字。

中野梓 Democracy dies in darkness.

试用一下:

密钥:喜欢瑶瑶

密文:真南败画借级避图且仍闻且势试晚航不教重兴觉编使帮点旅定常莫未当强掌胜短啊下适予乎角岸帮登枪朝历求渐如星编四站厂立远跟利办各管万免夜术训集八德亚均西安散义警号命响试园沉以编周手比而酒产移卡解弹练左青首杂热式钟亮类人资保国民试马义展眼立小坏承王影烟我评临巴就广非弟亲授寻禁工犯月究送绝令查委修验县园区持还网或嘴据书系打养建级雷次语赶策灭行令户量请创令严坐算刚地兴代为到域帝米事小听应谢疑是容排犯此采古钱枪排攻什福连不定时种哈宋题果校全知凡运预快脑父地击判技养门治俄先冷期版鲁救决乎米金双笔露守红叶这征结局钱财里肉竟介逐叶便石师印都伦件党吃值能发顾寻德感叫程啊夜虽肯整望黑易广现难细责态积全阵光版清费中常非配主间配兴致带检吗费另渐究何敢何道衣观护录是演卡同授杀笑庭室药激群神核么篇术设记专留然换载站广算转白顶损睛圣木望质列职港勒人让笔诉靠营巨模为损忽体章温多皮南却降假铁克学然谈收刻火乐据姐车就席者愿略值手像欧微东原亡观需左此终性写在时引边释兵先得显录射同朋础达拿提跑况弹能方际莫旧答枪白速视素敢么虑去产勒藏换

大家可以自行解密

愛牛奶盒的人 你們可不能混瑤哦~

@中野梓 #135015

真是一段幽默的美文呢

站長NB。。。

thphd 2047站长
  • 目前的编码方式为1汉字/byte, 密文较长。使用更多汉字可以缓解,但随着所选用汉字逐渐生僻,生成的密文逐渐不易与明文混淆。经权衡决定维持目前的编码方案
  • 加密安全性与密钥长度成正比,越难猜到的密钥越安全
  • 选择chacha20因为它是一种常用stream cipher,密文长度与明文长度成正比,而且在python上容易找到库。但chacha20在浏览器内用javascript并不容易实现(若不使用webcrypto)
libgen 天堂应该是图书馆的模样。一个阅读诗歌的人要比不读诗歌的人更难被战胜。创造是一种拯救。创造拯救了创造者本身。
标记为删除

欲参与讨论,请 登录注册

古迹的保护从来就不是为了过去,而是为了我们的未来。因为你做了保存,活着的人得以理解过去,理解过去,是为了让他知道怎么面对未来。 ——龙应台(中国,ROC)