解决方案 »

  1.   

    改成pwd=PASSWORD(encrypt('123456')).
    encrypt()表示加密算法。
      

  2.   

    要不你把sid 改成 Sid 试试。
      

  3.   

    这个不等价么?SQL 脚本不区分大小写吧....
      

  4.   

    数据库保存密码,直接保存加密后的字符串。比较的时候,比较2边加密的字符串。equals比较。
    总体逻辑没错,肯定是哪儿写错了。
      

  5.   

    晚上实验了好久..
    insert into test(username,pwd) values('Jim',ENCODE('123456','Jim'));
    select username from test where username='Jim' and pwd=ENCODE('123456','Jim')insert into test(username,pwd) values('Ryan',SHA('123456'))
    select username from test where username='Ryan' and pwd=SHA('123456')insert into test(username,pwd) values('Jack',MD5('123456'))
    select username from test where username='Jack' and pwd=MD5('123456')发现就只有第一组可以显示正确Jim,第二组和第三组的结果都是空集....
    这是怎么回事?我的MySQL有问题么?
      

  6.   

    你表的pwd 字段类型是什么?
      

  7.   

    已经知道是什么问题了...没考虑加密后生成字符串的长度...加密后字符串被截断了..
    把pwd改成char(32) 用MD5就没问题了!
      

  8.   

    为什么数据类型不用可变长字符串类型varchar呢?
      

  9.   

    我的“SELECT fid, fname,ENCODE('yang', '123'), AES_ENCRYPT('ddde', 'dkkdk'),ENCRYPT('guessme', 'ab') FROM myinfo ;”这样的脚本,加密出来,怎么是非字符串的,
    “hn�” , “G�Ea@ �昮�L��F�”, “NULL”
    ?? 求解救!!!