Сообщений: 119
Тем: 16
Зарегистрирован: Nov 2009
Репутация:
69
Доброе время суток.
Хроники: Lieage ll Gracia Epilogue (L2Open-Team 1115)
Возникла проблема при попытки войти на сервер,
проблема сама в том, что когда я регистрирую аккаунт через сайт, то при попытки войти на сервер мне пишут " не верный пароль...".
Однако, если зарегать аккаунт через "SQLAccountManager", на сервер пускает
Регистрацию писал сам, вот кусок кода, возможно проблема в кодировке base64_encode :
PHP код: <?php
$ins = mysql_query("INSERT INTO `accounts` VALUES('$login','".base64_encode(pack('H*', sha1($pass)))."',
'1','0','','1','','','','','','','".$_SESSION['user_id']."')",$link);
Помог ? Нажми:
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Там точно используется pack()?
Лучше подсмотрите алгоритм хеширования в java\ru\l2open\accountmanager\
Сообщений: 1,416
Тем: 44
Зарегистрирован: Mar 2010
Репутация:
2,310
А разве base64, а не MD5??
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Credo, нет, там base64_encode(sha1()) просто возможно у raw_output = true
Сообщений: 290
Тем: 23
Зарегистрирован: Aug 2009
Репутация:
116
Base64.encodeBytes(newpass)
Сообщений: 119
Тем: 16
Зарегистрирован: Nov 2009
Репутация:
69
PROGRAMMATOR Написал:Там точно используется pack()? Я олгаритм хеширования взял из Moy-Web.
java\ru\l2open\accountmanager\
Особо не понял смысла:
PHP код: <?php
package ru.l2open.accountmanager;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.PrintStream;
import java.io.Reader;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javolution.util.FastList;
import ru.l2open.Base64;
import ru.l2open.Config;
import ru.l2open.L2DatabaseFactory;
import ru.l2open.Server;
public class SQLAccountManager {
private static String _uname;
private static String _pass;
private static String _level;
private static String _mode;
public SQLAccountManager ()
public static void main(String[])
private static void printAccInfo(String)
private static void addOrUpdateAccount(String, String, String)
private static void changeAccountLevel(String, String)
private static void deleteAccount(String)
static
}
Base64.java
PHP код: <?php
package ru.l2open;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import ru.l2open.util.StringUtil;
public class Base64 {
public static final int NO_OPTIONS = 0;
public static final int ENCODE = 1;
public static final int DECODE = 0;
public static final int GZIP = 2;
public static final int DONT_BREAK_LINES = 8;
private static final int MAX_LINE_LENGTH = 76;
private static final byte EQUALS_SIGN = 61;
private static final byte NEW_LINE = 10;
private static final String PREFERRED_ENCODING = "UTF-8";
private static final byte[] ALPHABET;
private static final byte[] _NATIVE_ALPHABET;
static final byte[] DECODABET;
private static final byte WHITE_SPACE_ENC = 4294967291;
private static final byte EQUALS_SIGN_ENC = 4294967295;
public static void main(String[])
private Base64 ()
static byte[] encode3to4(byte[], byte[], int)
static byte[] encode3to4(byte[], int, int, byte[], int)
public static String encodeObject(Serializable)
public static String encodeObject(Serializable, int)
public static String encodeBytes(byte[])
public static String encodeBytes(byte[], int)
public static String encodeBytes(byte[], int, int)
public static String encodeBytes(byte[], int, int, int)
static int decode4to3(byte[], int, byte[], int)
public static byte[] decode(byte[], int, int)
public static byte[] decode(String)
public static Object decodeToObject(String)
static
}
И если сделать два одинаковых аккаунта через сайт и через SQLAccountManager и сравнить пароли они обсалютно одинаковые значит по смыслу получается что способ хеширования верный... в чем тогда странности ....
Помог ? Нажми:
Сообщений: 153
Тем: 22
Зарегистрирован: Feb 2010
Репутация:
25
расскажи sql о том в какие именно поля и что ты хочешь вставить
insert into `accounts` (`login`, `password` и тп) VALUES ('$логин', '$password' и тп), да и что-то многовато у тебя полей для accounts
|