2013-03-15 3 views
-1

Я использую метод входа, который проверяет пароли и имена пользователей в установке phpbb.Нестатический метод не может ссылаться на статический контекст

Мне нужно сделать эту работу, чтобы расшифровать шифрование phpbb.

я получаю эту ошибку:

vBulletin.java:139: error: non-static method phpbb_hash(String) cannot be referenced from a static context 
        pass2 = PHPBB3Password.phpbb_hash(password); 
             ^
1 error 

Это мой код:

returnCodes[1] = group; 
String pass2 = ""; 
if (forum == Type.myBB) { 
    pass2 = MD5.MD5(MD5.MD5(salt) + MD5.MD5(password)); 
} else if (forum == Type.vBulletin) { 
    pass2 = MD5.MD5(password); 
    pass2 = MD5.MD5(pass2 + salt); 
} else if (forum == Type.SMF) { 
    pass2 = MD5.SHA((name.toLowerCase()) + password); 
} else if (forum == Type.phpBB) { 
    pass2 = PHPBB3Password.phpbb_hash(password); 
} else if (forum == Type.IPB) { 
    pass2 = MD5.MD5(MD5.MD5(salt) + MD5.MD5(password)); 
} 

это PhpBB я использую:

public String phpbb_hash(String password) { 
     String random_state = unique_id(); 
     String random = ""; 
     int count = 6; 

     if (random.length() < count) { 
     random = ""; 

     for (int i = 0; i < count; i += 16) { 
      random_state = md5(unique_id() + random_state); 
      random += pack(md5(random_state)); 
     } 
     random = random.substring(0, count); 
     } 

     String hash = _hash_crypt_private(password, _hash_gensalt_private(random, itoa64)); 
     if (hash.length() == 34) 
     return hash; 

     return md5(password); 
    } 

И старый md5 Decrypter, который работал, но не был обновлен:

public static String MD5(String text) 
     throws NoSuchAlgorithmException, UnsupportedEncodingException { 
    MessageDigest md; 
    md = MessageDigest.getInstance("MD5"); 
    byte[] md5hash = new byte[32]; 
    md.update(text.getBytes("iso-8859-1"), 0, text.length()); 
    md5hash = md.digest(); 
    return convertToHex(md5hash); 
} 

UPDATE: а затем, что некоторые добрые комментаторам пришлось сказать: D

PHPBB3Password.java:18: error: non-static method unique_id() cannot be referenced from a static context 
     String random_state = unique_id(); 
          ^
PHPBB3Password.java:26: error: non-static method unique_id() cannot be referenced from a static context 
      random_state = md5(unique_id() + random_state); 
          ^
PHPBB3Password.java:32: error: non-static variable itoa64 cannot be referenced from a static context 
     String hash = _hash_crypt_private(password, _hash_gensalt_private(random, itoa64)); 
                       ^
PHPBB3Password.java:32: error: non-static method _hash_gensalt_private(String,String) cannot be referenced from a static context 
     String hash = _hash_crypt_private(password, _hash_gensalt_private(random, itoa64)); 
               ^
PHPBB3Password.java:32: error: non-static method _hash_crypt_private(String,String) cannot be referenced from a static context 
     String hash = _hash_crypt_private(password, _hash_gensalt_private(random, itoa64)); 
        ^
5 errors 
+0

Для того, чтобы ожидать полезные ответы, понятно, к на самом деле задайте вопрос. Это также помогает многим волонтерам, читающим ваш вопрос, если вы хорошо отформатируете свой код. В противном случае люди будут голосовать по вашему вопросу и уйти. Поэтому продолжайте делать свой вопрос полезным для читателей, чтобы они могли вам помочь. –

+0

Я не вижу определения для тех функций, откуда они берутся? (Вероятно, вам нужна другая ссылка на объект с этими методами). – Motes

ответ

0

если phpbb_hash использует некоторые атрибуты класса, то вам нужен экземпляр PHPBB3Password для доступа к нему. Таким образом, вы могли бы сделать что-то вроде:

pass2 = new PHPBB3Password().phpbb_hash(password); 

если phpbb_hash не использует какой-то атрибут класса, то этот метод должен быть объявлен статическим образом:

public static String phpbb_hash(String password) { 
... 
} 
+0

спасибо, но теперь у меня появились новые ошибки: опубликовано в главном сообщении – user2175693

Смежные вопросы