Генератор псевдо-случайных чисел с ИИ
Программирование с ИИ
Полностью отлаженный запрос для демонстрации работы алгоритма Блюма Блюма Шуба - генерирования псевдослучайных чисел размерности больше 1024 байт на основе введенной текстовой последовательности.
Для генерирования псевдослучайного числа надо ввести не менее 100 символов. Как только будет достигнут нужный размер будет выполнено вычисление и показаны результаты.
С этого момента можно вводить текст для XOR преобразования. Размер текста - 200 символов. Рекомендуется вводить только буквы, цифры заменять словами.
Запрос использовался с ИИ chat.deepseek.com и генерировал полный набор файлов для Android Studio Java проекта.
Проект компилировался без ошибок для смартфона Samsung S23 под Android 11
В запросе можно поменять необходимые значения:
- версию Android
- версию API
- размер генерируемого ключа (больше 4096 бит не проверялось, но может и работать)
------------------------------------------------------------------------------------------------------------------------
Полный текст запроса:
Сгенерируй максимально простой Java код приложения DeepseekBlume для Android 11 для SDK 33.
Разметка в Activity_main.xml должна позволять вертикальную прокрутку экрана для просмотра всего содержимого.
Нужно запросить и получить все необходимые для работы приложения разрешения, в том числе и разрешение на чтение и запись данных
В самом верху экрана разместить поле первого EditText для ввода текста. В первом EditText в подсказку Hint написать текст: "Введите не менее 100 символов для создания ключа".
Создадим Int переменную E=2048
При вводе текста в это поле надо проверять количество введенных символов. Не разрешать вводить в это поле первого EditText больше 120 символов.
Как только количество введенных символов в поле первого EditText станет больше 100, нужно преобразовать введенный текст в Big Int число и записать его в переменную L размерности E бит, и выполнить следующие действия в пункте NN
.
Начало пункта NN
Проверить наличие файла xor.txt в папке Download смартфона. Если файл xor.txt существует - удалить его.
Нужно проверить в папке Download смартфона наличие текстового файла digital.bbs в формате JSON
Если файла digital.bbs в папке Download НЕТ, то выполнить лействия в пункте 1. Если в папке Download есть файл digital.bbs то пункт 1 не выполнять, а прочитать значения чисел P, Q, L из файла digital.bbs
Начало пункта 1.
Приложение должно вычислить два простых Big Int числа P и Q размерности E бит, удовлетворяющих условию, что каждое из них при делении на 4 даёт остаток 3
На экране приложения должны располагаться несколько TextView
В один TextView необходимо написать число P
Во второй TextView необходимо написать число Q
Необходимо вычислить число M=P*Q
Выбираем случайное Big Int число L размерности E бит, взаимно простое с M
Создать в папке Download смартфона текстовый файл digital.bbs и записать в него вычисленные значения чисел P, Q, L в формате JSON
Конец пункта 1.
Необходимо вычислить число M=P*Q
Вычисляем Big Int число K = L*L (т.е. как L в степени 2)
Находим Big Int число H=K mod M
В третий TextView необходимо записать Big Int число H
Далее создадим функцию DigCreate, которую используем E раз.
Создадим Big Int переменную NumRnd, с которой будем производить битовые операции.
Функция DigCreate делает E раз следующее:
Начало пункта 2.
- вычислим число N=(H*H) mod M
- из числа N выберем самый младший бит (бит чётности)
- в числе NumRnd сделаем сдвиг битов влево на одну позицию. При этом самый старший бит (самый правый) отбрасывается
- запишем значение из младшего бита числа N в младший бит числа NumRnd
- присвоим значение числа N числу H
- повторим действия, начиная с пункта 2.
После этого в числе NumRnd должны быть заполнены все биты.
Напишем число NumRnd в четвёртый TextView
Далее с числом NumRnd нужно произвести битовые операции.
1. Запомнить значение младшего бита (бита чётности)
2. Сдвинуть все биты числа NumRnd на один бит вправо
3. Записать запомненный в пункте1 бит чётности в самый старший (правый) бит числа NumRnd
Написать число NumRnd в пятый TextView
Конец пункта NN
Ниже пятого TextView разместить поле второго EditText для ввода текста пользователем. В втором EditText в подсказку Hint написать текст: "Введите текст для обработки. Только буквы. Не более 200 символов".
В java коде в MainActivity.java написать комментарий:"В это поле EditText вводить только буквы. Цифры писать словами. Всего не более 200 символов"
Ограничить количество вводимых символов в поле второго EditText - не более 200 символов.
Ниже второго EditText разместить кнопку с надписью "XOR". Рядом с кнопкой "XOR" разместить кнопку "XOR2". Создать BigInt переменную ResultText
Ниже кнопок разместить шестой TextView. В шестом TextView в подсказку Hint написать текст: "Преобразованный в число введенный текст".
При нажатии на кнопку "XOR" :
- сначала преобразовать текст, введённый в поле второго EditText в BigInt число и записать в переменную EnText и в шестой TextView.
- затем выполнить бинарную операцию XOR между числами NumRnd и EnText
- очистить поле второго EditText
Ниже шестого TextView разместить седьмой TextView. В седьмом TextView в подсказку Hint написать текст: "Восстановленный текст".
Записать полученный результат в текстовый файл xor.txt в папку Download смартфона, в переменную ResultText и так же поместить результат операции XOR в поле второго EditText
При нажатии на кнопку "XOR2" нужно сделать следующее:
- очистить поле второго EditText
- произвести бинарную операцию XOR между числами NumRnd и ResultText и записать в поле второго EditText. Преобразовать этот результат в текст и записать в седьмой TextView
Comments
Post a Comment