php 开发app接口,用户登录密码怎么加密?

joxiong 2016-07-18 03:53:35
用户登录接口,app传递密码到服务端,密码应该怎样加密?
以下是我的加密方式:
1.密码首先urlencode(base64_encode())进行加密 生成字符串A
2.md5(帐号+密码) 生成一个32位的加密字符串B
3.最终加密密码格式:B的前16位+ A + B的后16位

还需要怎样优化?老大叫我加上写好的totp算法,加上totp有什么用吗?
...全文
374 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-07-20
  • 打赏
  • 举报
回复
一般的说 api 是无状态的,也就是说是不允许使用 cookie 来保持用户登录状态 但如果每次都要传递用户名和口令的话,显示是不安全的 因此,api 是通过 令牌(token)来识别用户的 token 是一个与用户名和时间相关的串,对每次会话都是不一样的,这要就有效的阻止了冒牌
努力的老孙 2016-07-20
  • 打赏
  • 举报
回复
同样关注这个问题, 是不是可以借签一些成熟的案例?
joxiong 2016-07-20
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
一般的说 api 是无状态的,也就是说是不允许使用 cookie 来保持用户登录状态 但如果每次都要传递用户名和口令的话,显示是不安全的 因此,api 是通过 令牌(token)来识别用户的 token 是一个与用户名和时间相关的串,对每次会话都是不一样的,这要就有效的阻止了冒牌
也就是做用户验证的时候只验证用户登录的时候返回给客户端的令牌(token),直接验证token就能识别用户?详细的逻辑是什么?这个不是很理解。 现在我实现的用户验证是: 1.登录成功时会把用户信息存在redis上,key就是生成的token,value存的是用户信息 2.每次请求接口携带用户名+登陆时返回的令牌(token) 3.验证令牌上的用户信息是否与验证的用户匹配

/**
     *
     * 验证用户密钥
     *
     * @param unknown $username
     *            用户名
     * @param unknown $usertoken
     *            用户密钥
     * @param number $flag
     *            0:验证普通用户 1:验证商铺用户
     * @return boolean true 验证成功   false 密钥错误 
     */
    public function checkUserToken($username, $usertoken, $flag = 0) {
        switch ($flag) {
            case 0:
                $cur = 'mobile';
                break;
            case 1:
                $cur = 'username';
                break;
        }
        $tokenmodel = self::getModel('token');
        // 获得当前密钥的用户信息
        $curusertoken = $tokenmodel->userInfo($usertoken);
        if($curusertoken){
            $tokeninfo = json_decode($curusertoken, true);
            if ($username === $tokeninfo[$cur]) {
                return true;
            } else {
                return false;
            }
        }else{
            return false;
        }
    }
joxiong 2016-07-19
  • 打赏
  • 举报
回复
TOTP算法是通过时间来加密的,我把它结合到验证密码的环节有什么用吗?
joxiong 2016-07-19
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
你最好按你老大说的做
老大叫我自己思考,不要跟着他的思维走
u010023334 2016-07-19
  • 打赏
  • 举报
回复
加密前 加salt
misaka去年夏天 2016-07-18
  • 打赏
  • 举报
回复
客户端把密码进行可逆的加密处理,到服务器端进行解密还原,然后再用一些算法加密密码存入数据库
xuzuning 2016-07-18
  • 打赏
  • 举报
回复
你最好按你老大说的做
joxiong 2016-07-18
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
你的密码被嵌入在(只做了简单的变形)密文中,显然是不对的 虽然 MD5 不可逆,但是 账号 通常会显示在界面上,很容易捕获
那通常做这一类的接口,还要做些什么处理呢?
xuzuning 2016-07-18
  • 打赏
  • 举报
回复
你的密码被嵌入在(只做了简单的变形)密文中,显然是不对的 虽然 MD5 不可逆,但是 账号 通常会显示在界面上,很容易捕获

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧