15 July 2019 - 字数统计：775 - 阅读大约需要3分钟 - Hits: Loading...

# EncMail-Project Part 1 - 准备阶段

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章讲述了作者关于项目EncMail-Project的准备过程，主要使用Web Crypto API但遇到兼容性问题，因为找不到能生成密钥对的JS库；文档缺乏实例和英文理解障碍使得学习和实施复杂。作者选择使用MDUI进行界面设计，尽管原计划不考虑美观。为解决登录问题，计划使用AES加密私钥并存储在sessionStorage，同时结合使用公钥的SHA-256指纹进行验证。私钥的安全存储也是重点考虑的内容。整个项目预计耗时较多。

- 准备的内容
- 对计划的补充

我是不会承认自己咕咕咕的！

参照：初计划

#
准备的内容

最终经过多方研究，我打算用Web Crypto API作为主要的实现方法。

不过用这种API的兼容性并不怎么好……我的博客之所以用了各种各样的JS库也是为了兼容性 （是不会写吧233333）

其实主要原因是因为我在网上搜不到哪个JS库能生成密钥对……之前有看到过有一个名叫jsencrypt的库，可惜只能加解密，不能生成密钥对……

说实话我从来都没有用过WebAPI，所以还得好好看看文档。但是这个破烂文档连例子都没有，这让人很难办，搜也搜不到有用的内容，而且我的英语并不算好，也不太习惯上Stack Overflow （不行，我要把锅推给某国的网络审查） 。正是如此，这个项目制作起来可能会相当花时间。

另外界面我打算用MDUI，那个文档看起来还挺简单。本来我没打算做一个好看的页面，就像之前制作的Iwara Downloader一样，打算套个表格完事。但是既然这个UI看起来挺简单，那就试试这个吧，反正我也不考虑兼容性问题了，WebAPI都用上了，再加一个这个也不算什么吧。

#
对计划的补充

计划的名称我打算命名为EncMail-Project （看起来有点俗……） ，不过这都不重要。

关于登录方面，我后来又想了想，没有人会记私钥的，所以为了方便使用，我打算通过AES加密私钥，和公钥一起上传到服务器上保存。登录时把加密的私钥和被公钥加密的令牌下载下来，然后输入密码解密获得私钥并解密令牌。

而之前想到的公钥被修改的问题，我想了想，那还是加上指纹吧（就是Hash啦），用SHA-256算法算出公钥的指纹，然后发送者在发送时自己对照一下就可以了（好像是`SubtleCrypto.digest()`？emmmm……这个文档没有翻译……）。

另外为了安全，私钥我打算存到`sessionStorage`里，以减小私钥泄露的危险。

今天就先到这里吧！

tags: 分布式 - 加密 - 邮件 - 计划 查看原始文件

#### 推荐文章

Loading...

上一篇：制作分布式加密邮件系统的计划
下一篇：Mayx终于考上大学了
想问这篇文章
召唤伊斯特瓦尔