Вернуться   AndroidTeam.ru - Российское сообщество Android > Разработка для Android > Вопросы по программированию

Вопросы по программированию Обсуждение всего, что связано с разработкой программ для Android (win, lin, mac), SDK, эмулятор

Ответ
 
Опции темы Опции просмотра
Старый 06.03.2013, 21:54   #1
edzhan
Junior Member
 
Регистрация: 06.03.2013
Сообщений: 1
edzhan is on a distinguished road
По умолчанию приложение при запуске пишет: Unfortunately, ... has stopped.

Доброго времени суток! Приложение выдаёт ошибку при запуске. Подскажите куда копать... Писалась time on based auth с ключом равным imei.
Код:
package ru.blackbrain.lockwebtotp;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import ru.blackbrain.lockwebtotp.AuthenticateTotpCode;

public class MainActivity extends Activity implements OnClickListener {
	
	TextView imei;
	TextView code;
	Button button_generate_code;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		imei = (TextView) findViewById(R.id.imei_num);
		code = (TextView) findViewById(R.id.code);
		button_generate_code = (Button) findViewById(R.id.button_generate_code);
		button_generate_code.setOnClickListener(this);
		OnClickListener oclBtncode = new OnClickListener() {
		       @Override
		       public void onClick(View v) {
		    	   TelephonyManager mTelephonyMgr=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
		    		  String secret = mTelephonyMgr.getDeviceId(); // imei телефона
		    	   AuthenticateTotpCode totpcode = new AuthenticateTotpCode();
try {
	String returncode=totpcode.test(secret);
		code.setText("code - " + returncode);
} catch (Exception e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}   
		       }
		};
		       button_generate_code.setOnClickListener(oclBtncode);}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub	
	}
}
и второй класс AuthenticateTotpCode :
Код:
package ru.blackbrain.lockwebtotp;

import java.nio.ByteBuffer;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base32;


public class AuthenticateTotpCode {
	
	public String test(String secret) throws Exception{
		long tmp_code_long = getCode(secret, getTimeIndex());
		String tmp_code_string = (String) new Base32().encode(tmp_code_long);
		return tmp_code_string;
	}	
	 public static long getTimeIndex() {
		 return System.currentTimeMillis()/1000/30;
		 }
	 private static long getCode(String secret, long timeIndex) 
	            throws NoSuchAlgorithmException, InvalidKeyException {
	        return getCode(new Base32().decode(secret), timeIndex);
	    }

	    private static long getCode(byte[] secret, long timeIndex) 
	            throws NoSuchAlgorithmException, InvalidKeyException {
	        SecretKeySpec signKey = new SecretKeySpec(secret, "HmacSHA1");
	        ByteBuffer buffer = ByteBuffer.allocate(8);
	        buffer.putLong(timeIndex);
	        byte[] timeBytes = buffer.array();
	        Mac mac = Mac.getInstance("HmacSHA1");
	        mac.init(signKey);
	        byte[] hash = mac.doFinal(timeBytes);
	        int offset = hash[19] & 0xf;
	        long truncatedHash = hash[offset] & 0x7f;
	        for (int i = 1; i < 4; i++) {
	            truncatedHash <<= 8;
	            truncatedHash |= hash[offset + i] & 0xff;
	        }
	        return (truncatedHash %= 1000000);
	    }	 
	/**
	 * @param args
	 */
	public void main(String secret) {
		// TODO Auto-generated method stub
		  try {
			new AuthenticateTotpCode().test(secret);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}      
	}
}
Пожалуйста, подскажите куда копать...
edzhan вне форума   Ответить с цитированием
Ответ

Социальные закладки

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:27. Часовой пояс GMT +3.