D0n9X1n / hexo-blog-encrypt

Yet, just another hexo plugin for security.
https://www.npmjs.com/package/hexo-blog-encrypt
MIT License
989 stars 102 forks source link

为什么内容为空要报错 #95

Closed xiazeyu closed 5 years ago

xiazeyu commented 5 years ago

RT

D0n9X1n commented 5 years ago

See https://github.com/brix/crypto-js/issues/50

https://crypto.stackexchange.com/questions/32013/should-aes-decryptct-wrong-key-return-blank-or-wrong-result

AES 加密的问题,如果单纯在文章中引入新的 tag 又有可能引发样式异常问题。也是很头痛啊,现在只好在 hexo g 的时候加个 warning 详情见 #80 。

xiazeyu commented 5 years ago

看起来一开始是用空做解密成功与否的判断的。

https://github.com/MikeCoder/hexo-blog-encrypt/commit/d43bb94e15c9445edf983538deff0f25e725ff4f 我先去找找API提供的解决方案 实在不行就加一个MD5校验来判断

空字符串的MD5:d41d8cd98f00b204e9800998ecf8427e

xiazeyu commented 5 years ago

其实浏览器是自带CryptoAPI的 https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/decrypt

nodejs也有 https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/decrypt

D0n9X1n commented 5 years ago

关于空内容,我的想法是这种情况出现的概率太小,除非是有人特地对空内容加密,有可能仅仅只是为了恶作剧?或者是测试插件。

如果是前者的话,我们还可以引入一个新的配置叫:wrong_password_message。用来展示当密码错误时弹出的内容。这个配置还可以做成字符串数组,每次随机挑一个。

如果是后者,我们可以在:https://github.com/MikeCoder/hexo-blog-encrypt/blob/45d38a177de9704c04c3ab66a42adabf3ad016ab/index.js#L84 这里给 content 直接插入一段话,比如 Empty 之类的。

D0n9X1n commented 5 years ago

如果浏览器支持的话,并且测试ok,可以考虑替换掉 CryptoJS。 用 CryptoJS 的本意就是省去了去测试兼容性的工作。

xiazeyu commented 5 years ago

emm对于空内容 我查阅了你发的https://github.com/MikeCoder/hexo-blog-encrypt/issues/95#issuecomment-523275009

我觉得空内容报错仅仅是以前的历史遗留(以前用来检测密码是否错误..),其实是可以直接删除那一段代码的,我们换一种方法检测密码是否正确即可。这样优化了以后,空内容就可以接受了。

D0n9X1n commented 5 years ago

你是想在解密之前,通过类似 MD5, SHA1 这种方式先匹一把密码吗?

D0n9X1n commented 5 years ago

不太建议把密钥用其他形式存储在页面上,摘要算法安全性太低,用加密算法的话就变成了死循环。

xiazeyu commented 5 years ago

加密两个字段 data和与之对应的hash 同时解密这两个字段 如果解密后的hash为空 失败 如果解密后的hash与解密后的data不匹配 失败

我稍后再确认一下。好像AES本身无法判断密钥是否正确

xiazeyu commented 5 years ago

还有一个 你觉得用onchange来跑实时解密的想法如何/滑稽

D0n9X1n commented 5 years ago

说到 onchange 我仿佛已经听到了风扇声。

同时加密两个可行,直接把 data 的 hash 写到一个 display:none 的 div 里面,也不影响样式也不影响现有的模版。

xiazeyu commented 5 years ago

可以把密文放到script里,这样就不会被generator误识别 最近还在学加密的kdf, hash, cipher算法..所以可能需要鸽几天

D0n9X1n commented 5 years ago

这个先 close, 以新的 issue 为准。