title: 如何保证用户登录时提交密码已经加密？
desc: 其实在接收到了之后再加密是非常方便的，你可以在后台轻松做各种加密，这样几乎可以保证数据拿去也变不成明文内容。但问题是在传输的时候，假设我们不使用 https，即使是使用 https 传输，如何保证用户的数据被提交过来的时候是已经加密过的？<br><br>现在有一种方法是用 js 加密。比如：JSMD5'origiPassword'。但问题是我们还要保证功能的可用性。比如无 JS 环境用 form 也可以提交。假设是注册用户。这时无 JS 的情况传输到后台的时候是明文密码，那么存在数据库的时候可能是这样的 salt md5origiPassword， salt，但当用户下次登录的时候是在有 JS 的环境里，那么，去数据库校验的就会因为不符而登录不上，所以如题？有什么比较好的方法？
topic: 前端开发
content: 如何保证用户登陆时提交密码已经加密？密码是否已加密，需要客户端和服务端建立约定，双方按约定办事就行了。这里提到的另一个问题是，如何保证传输安全？ 最理想的方案当然是走 HTTPS 协议. HTTPS 在理论上是可靠的，但在国内会打一些折扣：你可以随便找一台电脑看看有没有安装商业公司或机构的根证书，这些根证书为线路某节点成为中间人提供了可能性同时，在木马横行的年代，密码在加密提交前可能就被拿到了，此时 HTTPS 成
answerer_tags: Mobile developer @Alipay