purebasic.info

PureBasic forum
Текущее время: Вс окт 20, 2019 10:06 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: Вт окт 01, 2019 9:47 am 
Не в сети
студент

Зарегистрирован: Вт окт 01, 2019 9:35 am
Сообщений: 4
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Приветствую всех, как изменить код чтобы не генерировал случайные значения, а прибавлял к определенному значению +1 в конце в формате hex
Например в коде пропишем изначальное значение в hex 0000000000000000000000000000000000000000000000000000000000000001
и при запуске программы к нему прибавляется +1 и получится 0000000000000000000000000000000000000000000000000000000000000002
и так далее чтобы увеличивался на 1 с определенного диапазона, которое укажем в коде.
Кто поможет отблагодарю балансом.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Procedure.s NameGen()
  Protected Chars.s,Pos.a,Result.s,n.a
  Chars="abcdef"
  OpenCryptRandom()
  For n=1 To 64
    Select CryptRandom(1)
      Case 1
        Result+Str(CryptRandom(9))
      Case 0
        Pos=CryptRandom(Len(Chars))
        Result+Mid(Chars,Pos,1)
    EndSelect
  Next
  CloseCryptRandom()
  ProcedureReturn Result
EndProcedure



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 01, 2019 3:01 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 330
Благодарил (а): 14 раз.
Поблагодарили: 40 раз.
Пункты репутации: 2
Код:
1
2
3
4
5
6
Chars.s = "abcdef"
 
For i.l = 0 To 15
  Chars = Hex(Val("$"+Chars)+1)
  Debug Chars
Next i



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср окт 02, 2019 6:22 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 909
Благодарил (а): 2 раз.
Поблагодарили: 45 раз.
Пункты репутации: 9
MAKER BTC2 писал(а):
Приветствую всех, как изменить код чтобы не генерировал случайные значения, а прибавлял к определенному значению +1 в конце в формате hex
Например в коде пропишем изначальное значение в hex 0000000000000000000000000000000000000000000000000000000000000001
и при запуске программы к нему прибавляется +1 и получится 0000000000000000000000000000000000000000000000000000000000000002
и так далее чтобы увеличивался на 1 с определенного диапазона, которое укажем в коде.
Кто поможет отблагодарю балансом.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Procedure.s NameGen()
  Protected Chars.s,Pos.a,Result.s,n.a
  Chars="abcdef"
  OpenCryptRandom()
  For n=1 To 64
    Select CryptRandom(1)
      Case 1
        Result+Str(CryptRandom(9))
      Case 0
        Pos=CryptRandom(Len(Chars))
        Result+Mid(Chars,Pos,1)
    EndSelect
  Next
  CloseCryptRandom()
  ProcedureReturn Result
EndProcedure


А баланс это сколько? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт окт 04, 2019 6:02 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 369
Благодарил (а): 1 раз.
Поблагодарили: 15 раз.
Пункты репутации: 0
И как вопрос решен или как?

Както задача не до конца непонятно

из справки:
Result = CryptRandom(Maximum)
Максимальное значение, возвращаемое функцией. 'Maximum' не может превышать положительное long значение: 2147483647.
а это всего 7FFFFFFF, в отличии од твоих:
0000000000000000000000000000000000000000000000000000000000000002

как по мне это длинный хекс
Цитата:
Например в коде пропишем изначальное значение в hex 0000000000000000000000000000000000000000000000000000000000000001

Как такой длинный собрался обрабатывать в сумировании?
И в правду такой длинный хекс тебе нужен, или по короче как тут
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
*Key = AllocateMemory(16)
 
If OpenCryptRandom() And *Key
    CryptRandomData(*Key, 16)
   
    Text$ = "Сгенерированный Ключ:"
    For i = 0 To 15
        Text$ + " " + RSet(Hex(PeekB(*Key+i), #PB_Byte), 2, "0")
    Next i    
   
    CloseCryptRandom()
Else
    Text$ = "Генерация ключа недоступна"
EndIf
 
MessageRequester("Example", Text$)


Сгенерированный Ключ: 2F 1D A8 A3 5B D8 B7 6F 71 0D 5F D7 BF EC A4 43
у тебя тоже выходит 32 байта*8=256 битный ключ похоже.

просто суммируй с переносом в старший байт.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт окт 04, 2019 6:07 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 369
Благодарил (а): 1 раз.
Поблагодарили: 15 раз.
Пункты репутации: 0
вот тебе для десятичного счета, переделаеш для хекса и добавиш желаемое число розрядов
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
a1=0
a2=0
a3=0
a4=0
b=0
For i=0 To 11000;000
    b=b+1: If b>100: b=0: Debug Str(a4)+" "+Str(a3)+" "+Str(a2)+" "+Str(a1)+" ":EndIf;отображам только сотые циклы иначе долго будем смотреть на бегущие циферки
   
    ;Debug Str(a4)+" "+Str(a3)+" "+Str(a2)+" "+Str(a1)+" "
   
    ;тут твоя прога
   
    ; ниже сумматор для четырех розрядов
    a1+1:  If a1>=10:a1=0:a2+1:EndIf
    If a2>=10:a2=0:a3+1:EndIf
    If a3>=10:a3=0:a4+1:EndIf
    If a4>=10:a4=0:a3=0:a2=0:a1=0:Debug "произошло переполнение, все заново":EndIf
Next
 


_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб окт 12, 2019 2:42 am 
Не в сети
студент

Зарегистрирован: Вт окт 01, 2019 9:35 am
Сообщений: 4
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Спасибо, как будет время попробую из списка самый оптимальный для меня код.
Кто помог отпишу позже, чтобы отблагодарить.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 15, 2019 1:47 am 
Не в сети
студент

Зарегистрирован: Вт окт 01, 2019 9:35 am
Сообщений: 4
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
balex1978 писал(а):
вот тебе для десятичного счета, переделаеш для хекса и добавиш желаемое число розрядов
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
a1=0
a2=0
a3=0
a4=0
b=0
For i=0 To 11000;000
    b=b+1: If b>100: b=0: Debug Str(a4)+" "+Str(a3)+" "+Str(a2)+" "+Str(a1)+" ":EndIf;отображам только сотые циклы иначе долго будем смотреть на бегущие циферки
   
    ;Debug Str(a4)+" "+Str(a3)+" "+Str(a2)+" "+Str(a1)+" "
   
    ;тут твоя прога
   
    ; ниже сумматор для четырех розрядов
    a1+1:  If a1>=10:a1=0:a2+1:EndIf
    If a2>=10:a2=0:a3+1:EndIf
    If a3>=10:a3=0:a4+1:EndIf
    If a4>=10:a4=0:a3=0:a2=0:a1=0:Debug "произошло переполнение, все заново":EndIf
Next
 



пробовал код, который посоветовали, не один не подошел.

Попробую еще раз объяснить задачу.
Вот у меня код на питоне, но его нужно переделать под purebasic.
Есть у меня начальный диапазон и конечный в hex, все 64 длины.
Нужно написать код, который бы с шагом прибавлял к начальному диапазону по 1 и и продолжал идти дальше
например есть 0000000000000000000000000000000000000000000000000000000000000001, а станет
0000000000000000000000000000000000000000000000000000000000000002
0000000000000000000000000000000000000000000000000000000000000003
0000000000000000000000000000000000000000000000000000000000000004
0000000000000000000000000000000000000000000000000000000000000005
0000000000000000000000000000000000000000000000000000000000000006
0000000000000000000000000000000000000000000000000000000000000007
0000000000000000000000000000000000000000000000000000000000000008
0000000000000000000000000000000000000000000000000000000000000009
000000000000000000000000000000000000000000000000000000000000000a
000000000000000000000000000000000000000000000000000000000000000b
000000000000000000000000000000000000000000000000000000000000000c
000000000000000000000000000000000000000000000000000000000000000d
000000000000000000000000000000000000000000000000000000000000000e
000000000000000000000000000000000000000000000000000000000000000f
0000000000000000000000000000000000000000000000000000000000000010
и т.д
low = 0x0000000000000000000000000000000000000000000000000000000000000001
high = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140
while True:
for myhex in range(low,high,1):
ran = myhex
myhex = "%064x" % ran
myhex = myhex[:64]

как это все перевести в pb не могу понять, так как не знаком с ним хорошо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 15, 2019 6:27 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 895
Благодарил (а): 95 раз.
Поблагодарили: 26 раз.
Пункты репутации: 5
а чё с таким числом делать? обязательно столько незначащих нулей? нужны ли они?
это ж сколько ты будешь машину мучить прибавляя по 1?

или как строку обрабатывай или напрямую в памяти побайтно с право налево


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 15, 2019 8:01 am 
Не в сети
студент

Зарегистрирован: Вт окт 01, 2019 9:35 am
Сообщений: 4
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
newJS писал(а):
а чё с таким числом делать? обязательно столько незначащих нулей? нужны ли они?
это ж сколько ты будешь машину мучить прибавляя по 1?

или как строку обрабатывай или напрямую в памяти побайтно с право налево

Это hex 64 символьный, 256 битный, наличие всей длины обязательно.
У меня подключена библиотека для обработки таких данных
XIncludeFile "HashLib.pb"

Есть какая нибудь подсказка как это всё можно описать в pb?

Софт рандомно выдаёт ключи в 64 hex, хочу переделать на последовательность


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 15, 2019 11:48 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11536
Благодарил (а): 4 раз.
Поблагодарили: 473 раз.
Проще будет работать с двоичными данными, которые переводить в строку если в этом есть необходимость.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 15, 2019 7:48 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 909
Благодарил (а): 2 раз.
Поблагодарили: 45 раз.
Пункты репутации: 9
Всяко можно но нужно знать для чего баян. :D
PS:наверно на лонг надо что бы в минус не перейти. :roll:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
Structure registr256
  reg32_0.q
  reg32_1.q
  reg32_2.q
  reg32_3.q
EndStructure
Global s.s
Global registr256.registr256
Procedure add1()
  If registr256\reg32_0=9223372036854775807
    registr256\reg32_0=0
      If registr256\reg32_1=9223372036854775807
        registr256\reg32_0=0
        registr256\reg32_1=0
              If registr256\reg32_2=9223372036854775807
                registr256\reg32_0=0
                registr256\reg32_1=0
                registr256\reg32_2=0
                  If registr256\reg32_3=9223372036854775807
                     MessageRequester("End","MAX HISLO ")
                  Else
                       registr256\reg32_3+1
                  EndIf
               Else
                registr256\reg32_2+1
               EndIf
      Else
        registr256\reg32_1+1
      EndIf
   Else
     registr256\reg32_0+1
   EndIf
   
EndProcedure
For i=0 To 1000
  add1()
  Debug Hex(registr256\reg32_3)+Hex(registr256\reg32_2)+Hex(registr256\reg32_1)+Hex(registr256\reg32_0)
Next
 
For i=0 To 1000
  add1()
  s=Hex(registr256\reg32_3)+Hex(registr256\reg32_2)+Hex(registr256\reg32_1)+Hex(registr256\reg32_0)
 
    s=RSet(s,64-Len(s),"0")
    Debug s
Next
 



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB