V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaegumi
V2EX  ›  程序员

phper 配置一个 cas 怎么就这么不顺利。

  •  
  •   chaegumi ·
    chaegumi · 2016-04-17 15:35:39 +08:00 · 2495 次点击
    这是一个创建于 3153 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好不容易配置到数据库验证明文验证成功了,现在做到加密验证,我本来的 php 注册进来的加密算法是 password_hash('password', PASSWORD_BCRYPT)

    php 文档中是这样说的:
    总而言之,开发者如果仅针对 PHP 5.3.7 及之后版本进行开发,那应该使用 “$2y$” 而非 “$2a$”。

    我现在要配置 java 的 cas ,这边的我找到的 java 算法,生成的是$2a$开头的, php 跟 java 得出来的结果对不上

    这个怎么搞。愁死了。

    不知道怎么对接。有有经验的人没,指点下。

    或者我要去改下 php 端,密码入库的加密方式,然后去适应 cas 的。
    7 条回复    2016-04-19 16:28:02 +08:00
    ershisi
        1
    ershisi  
       2016-04-17 17:32:51 +08:00   ❤️ 1
    我的 脑残办法,库里存两种密文。这样就没那么纠结了
    lianyue
        2
    lianyue  
       2016-04-17 17:38:23 +08:00   ❤️ 2
    php 的

    手动 $2a
    crypt($password, '$2a$10$'. uniqid(mt_rand(), true) .'$');
    10 = 计算耗时 越大耗时越久
    后面是随机数



    crypt($password, '$2y$10$'. uniqid(mt_rand(), true) .'$');
    和 password_hash 结果相同

    http://php.net/manual/en/function.crypt.php
    maxsec
        3
    maxsec  
       2016-04-17 21:34:20 +08:00
    用 hash_mac 吧
    chaegumi
        4
    chaegumi  
    OP
       2016-04-18 09:36:30 +08:00
    @lianyue 你这边的$password 一定要保证全部是 ASCII 字符,才不会出错吧。 http://php.net/security/crypt_blowfish.php
    chaegumi
        5
    chaegumi  
    OP
       2016-04-18 09:38:20 +08:00
    @chaegumi 常见的密码格式要求:数字大小写字母英文标点符号,是符合条件的吗?
    chaegumi
        6
    chaegumi  
    OP
       2016-04-19 16:09:59 +08:00
    @lianyue
    @ershisi

    我仿造 cas 计划中版本的功能,实现了不修改 php 代码,修改 cas 里边的密码验证。成功了。
    lianyue
        7
    lianyue  
       2016-04-19 16:28:02 +08:00 via iPhone
    @chaegumi 那个是只在 5.3.7 才存在的 bug 吧 😂 谁 密码用非 ascii 字符 如果能改 java 推荐改 java $2y 比$2a 好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.