Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.59
Creative
22 / 8 / 1
Регистрация: 13.07.2012
Сообщений: 66
#1

Продажа приложений под андроид, посредсвом продажи ключей - Программирование Android

29.09.2012, 16:33. Просмотров 4630. Ответов 24
Метки нет (Все метки)

Здравствуйте!

Нужен совет: Хочу продавать приложение под андроид, но не через Гугл Плэй, а посредсвом продажи ключей.
То есть чтобы запустить каждую конкретную копию приложения пользователь должен ввести уникальный ключ, который он собственно у меня и приобретет. Приложение при запуске сверяется с базой данных на хостинге и разрешает либо запрещает работу.

Вопрос насколько реально это реализовать? Или возможно я мыслю не в том направлении и есть другие способы защиты?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 16:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Продажа приложений под андроид, посредсвом продажи ключей (Программирование Android):

Подскажите книги для разработки приложений под андроид - Программирование Android
Подскажите книги для разработки приложений под андроид желательно с ссылками на скачивание для начинающего который вообще ничего не знает...

Кто чем пользуется для разработки приложений под Андроид? - Программирование Android
Всем доброго времени суток! Вопрос немного нубный, но тем не менее... Хотел бы начать разрабатывать ПО под Андройд. Вроде взял...

Продажа приложений как физическое лицо - Программирование Android
В инете ДХ и больше инфы... но везде по разному.. Кто как продает? Как регаться как физ.лицо ? там вроде нельзя как физ лицо в...

Можно ли написать веб сервер на Яве для клиента на Андроид,имея под рукой только телефон на том самом андроид? - Программирование Android
Уважаемые гуру программирования, если можно, пожалуйста, напишите поподробнее- какой программой компилировать код, какой лучше выбрать...

Где пообщаться насчёт способов продажи приложений, соблюдения всех тонкостей? - Программирование Android
Подходит время публикации своих приложений, хочется пообщаться с людьми, которые давно и успешно продают приложения (или распространяют...

Программирование приложений для Андроид на C++ - Программирование Android
Можно ли создавать приложения для Андроид на языке С++? И если да, то с чего посоветуете начать? Язык С++ я знаю.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
avp72
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 4
07.10.2012, 10:56 #16
на ПК можно сделать привязку к железу - сумма кодов BIOS уникальна. А есть ли такое у Андроида? - вопрос участникам
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.10.2012, 17:40 #17
Java
1
2
3
String serviceName = Context.TELEPHONY_SERVICE;
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(serviceName);
String  deviceID = telephonyManager.getDeviceId();
Drulya
6 / 6 / 3
Регистрация: 24.09.2012
Сообщений: 231
Завершенные тесты: 2
09.10.2012, 23:41 #18
Занимательно, спасибо!
Creative
22 / 8 / 1
Регистрация: 13.07.2012
Сообщений: 66
13.10.2012, 12:20  [ТС] #19
Хотя лучше :
1.Сохраняет ключ в файлике где нибудь. При проверке берет ключ из файлика и делает ХЭШ. Внутри программы храни хэш. Если Хэши совпали - программа лицензирована.
Принцип что такое хэш пояснить? и для чего он?
Спасибо огромное) да, пожалуйста, поясните...
alexusankov
3 / 3 / 0
Регистрация: 05.10.2012
Сообщений: 10
15.10.2012, 08:11 #20
Принцип довольно простой. Представь себе ситуацию : тебе чтобы войти в программу нужно ввести пароль. Ты вводишь пароль - и программа его проверяет - если верный - ты входишь. Отсюда логически вытекает - что в самой программе тоже хранится пароль - чтобы ей было сравнивать с чем введенный тобой вариант, верно?
Но это очень небезопасно, программу можно дизассемблировать, и посмотреть пасс, который она хранит у себя для сравнения. Поэтому существует ХЭШ. Элементарный пример :
Ты входишь в Windows. Твой пароль 123456. Естественно windows нигде не будет хранить твой пароль '123456' - иначе найдут хранилище паролей и смысл защиты улетучится. Система будет хранить хэш пароля. Т.е. самый тупой пример - перемножить подряд цифры, т.е. 6*5*4*3*2*1 =720. Вот 720 - это хэш твоего пароля - его будет хранить система. Когда ты входишь в систему она превращает твой пароль в хэш, и сравнивает не пароли, а сравнивает ХЭШИ, и если они совпадают - аутентификация пройдена. Подумай по хэшу 720 можно понять какой был начальный пароль? Вряд ли сразу навскидку. Это и есть принцип хэша, отказ от хранения ключей, и хранить только хэши, при попытке проверить ключ / войти в систему - превращать пароль / ключ в хэш и сравнить хэши.
З.ы. алгоритм который я привел - банален для тупости и для понимания, для работы используйте аццкие алгоритмы, а-ля md5 хэширование и подобные, там алгоритм превращения ключа в хэш намного сложнее есс-но.
З.ы.ы. пример входа в windows - некорректен - это просто пример. Вход в windows осуществляется немного по другому))))
Creative
22 / 8 / 1
Регистрация: 13.07.2012
Сообщений: 66
15.10.2012, 10:15  [ТС] #21
принцип ясен, а как это реализовать для андроид приложение? может порекомендуете что почитать по этому поводу?
mks81
7 / 7 / 0
Регистрация: 12.10.2012
Сообщений: 51
15.10.2012, 11:18 #22
пример хэш суммы SHA-256
вычисляем хэш сумму нужного пароля, сохраняем куда следует, потом при вводе пароля сравниваем введенную сумму с сохраненной, если равны, записываем в пропертис флаг позволяющий программе работать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static String sha256(String base)
{
    try
    {
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hash = digest.digest(base.getBytes("UTF-8"));
        StringBuffer hexString = new StringBuffer();
        for (int i=0;i<hash.length;i++)
        {
            String hex=Integer.toHexString(0xff & hash[i]);
            if(hex.length()==1) hexString.append('0');
            hexString.append(hex);
        }
        return hexString.toString();
    }
    catch(Exception ex)
    {
        throw new RuntimeException(ex);
    }
}
Creative
22 / 8 / 1
Регистрация: 13.07.2012
Сообщений: 66
17.10.2012, 10:20  [ТС] #23
Цитата Сообщение от alexusankov Посмотреть сообщение
Хотя лучше :
1.Сохраняет ключ в файлике где нибудь. При проверке берет ключ из файлика и делает ХЭШ. Внутри программы храни хэш. Если Хэши совпали - программа лицензирована.
Принцип что такое хэш пояснить? и для чего он?
еще вопрос назрел) как хранить хэш внутри программы? и вообще, как что либо хранить внутри программы?
я думал, что программа хранит только то что написано в коде при ее создании, а остальные данные может получать динамически из внешних источников, как то файлы или БД... или я чегото не понимаю?
avp72
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 4
17.10.2012, 11:33 #24
а что мешает студентам вместе с программой копировать и пароль? я не виду тут проверку на уникальность
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.10.2012, 11:45 #25
Цитата Сообщение от avp72 Посмотреть сообщение
а что мешает студентам вместе с программой копировать и пароль? я не виду тут проверку на уникальность
это был просто пример хеша, пор уникальность уже было сказано.

Цитата Сообщение от Creative Посмотреть сообщение
как хранить хэш внутри программы?
http://developer.android.com/guide/t...a-storage.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 11:45
Привет! Вот еще темы с ответами:

Запуск приложений с Vulkan API на Андроид - Программирование Android
Доброго времени суток, форумчане! С выходом нового графического API Vulkan компания Samsung продемонстрировала работу демки Protostar на...

Apk tool и декомпиляция андроид приложений - Программирование Android
Добрый день! Пытаюсь декомпилировать фонарик Color Flashlight.apk при помощи утилиты Apk tool, но полной декомпиляции не получаю....

Backend Сервер для андроид приложений - Программирование Android
нужно построить сервер для обработки запросов с Андроид приложений. Запрос состоит из текста. Сервер должен парсировать текст и в...

С чего начать разработку приложений и игр на Андроид? - Программирование Android
Ребят начал учить язык С++,учу для разработки игр и приложений на андроид,намерен создавать на Unity 5,что посоветуете для облегчения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.10.2012, 11:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru