Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / хэшировать по алгоритму sha256 / 15 сообщений из 15, страница 1 из 1
02.12.2019, 13:55
    #39897043
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Добрый день!
подскажите пожалуйста как можно хэшировать файл в билдере? хэшировать по алгоритму sha256
...
Рейтинг: 0 / 0
02.12.2019, 14:42
    #39897076
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Вот вижу примеры в нете, но они связаны с созданием oleobject. Как я понимаю, данный пример связан с дешифровкой данных. А мне нужно наоборот данные зашифровать в файле. Я делаю Retrieve DW и из DW заливаю данные в файл. Как можно при этом шифровать данные?
integer li_rc
oleobject loo_Crypt
string s
string ls_Hash

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat_9_5_0.Crypt2")
if li_rc < 0 then
destroy loo_Crypt
MessageBox("Error","Connecting to COM object failed")
return
end if

s = "The quick brown fox jumps over the lazy dog"

loo_Crypt.HashAlgorithm = "sha1"
loo_Crypt.EncodingMode = "hex"
...
Рейтинг: 0 / 0
02.12.2019, 16:33
    #39897137
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
какая версия PB? Какая БД? Может проще всего в MS SQL:
Код: sql
1.
2.
3.
HASHBYTES ( '<algorithm>', { @input | 'input' } )  
  
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 
...
Рейтинг: 0 / 0
02.12.2019, 16:43
    #39897146
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Версия PowerBuilder 2017 R3 Build 1880
БД sybase
...
Рейтинг: 0 / 0
02.12.2019, 17:32
    #39897176
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
hum_i

как можно хэшировать файл
...
Chilkat_9_5_0.Crypt2


https://www.chilkatsoft.com/refdoc/xChilkatCrypt2Ref.html#method66
...
Рейтинг: 0 / 0
03.12.2019, 10:16
    #39897413
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Нашла в хелпе пример использования SHA256. Как я писала ранее я вытаскиваю строку out_string из dw и в цикле записываю ее в файл. Дебагом проверяю сначала вижу строка первоначально нормальная 'Клиент Иванов Иван Иванович; Номер 5555666666;...'
А потом то что получается после хеширования. Вроде правильно. Но в файле вместо строки знаки вопроса ??????????
Подскажите что не так?

lblb_data = Blob( out_string, EncodingANSI! )

lblb_sha1= lnv_CrypterObject.SHA( SHA256!, lblb_data )

out_string = String( lblb_sha1 )

ll_ret = FileWrite( FileNum, out_string )
...
Рейтинг: 0 / 0
03.12.2019, 12:13
    #39897488
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
hum_i,
посмотрите здесь и здесь , там много полезного и готового.
...
Рейтинг: 0 / 0
03.12.2019, 12:53
    #39897513
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
hum_i
Нашла в хелпе пример использования SHA256. Как я писала ранее я вытаскиваю строку out_string из dw и в цикле записываю ее в файл. Дебагом проверяю сначала вижу строка первоначально нормальная 'Клиент Иванов Иван Иванович; Номер 5555666666;...'
А потом то что получается после хеширования. Вроде правильно. Но в файле вместо строки знаки вопроса ??????????
Подскажите что не так?

Код: sql
1.
2.
3.
4.
5.
6.
7.
lblb_data = Blob( out_string, EncodingANSI! )
		
lblb_sha1= lnv_CrypterObject.SHA( SHA256!, lblb_data )
		
out_string = String( lblb_sha1 )  // это неправильно !!!

ll_ret = FileWrite( FileNum, out_string )



в переменной lblb_sha1 будет хэш, т.е. 256 бит вычислений хэша, т.е. 32 байта (потому что 256 / 8 = 32) абсолютно любой информации, т.е. binary data, в текстовый файл она не сохранится. Но можно смело сохранить в binary файл (т.е. FileNum должен быто открыт в StreamMode!).

ll_ret = FileWrite( FileNum, lblb_sha1 )
...
Рейтинг: 0 / 0
03.12.2019, 15:28
    #39897608
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
alexis glinski
hum_i
Нашла в хелпе пример использования SHA256. Как я писала ранее я вытаскиваю строку out_string из dw и в цикле записываю ее в файл. Дебагом проверяю сначала вижу строка первоначально нормальная 'Клиент Иванов Иван Иванович; Номер 5555666666;...'
А потом то что получается после хеширования. Вроде правильно. Но в файле вместо строки знаки вопроса ??????????
Подскажите что не так?

Код: sql
1.
2.
3.
4.
5.
6.
7.
lblb_data = Blob( out_string, EncodingANSI! )
		
lblb_sha1= lnv_CrypterObject.SHA( SHA256!, lblb_data )
		
out_string = String( lblb_sha1 )  // это неправильно !!!

ll_ret = FileWrite( FileNum, out_string )



в переменной lblb_sha1 будет хэш, т.е. 256 бит вычислений хэша, т.е. 32 байта (потому что 256 / 8 = 32) абсолютно любой информации, т.е. binary data, в текстовый файл она не сохранится. Но можно смело сохранить в binary файл (т.е. FileNum должен быто открыт в StreamMode!).

ll_ret = FileWrite( FileNum, lblb_sha1 )


Спасибо, вроде получилось)
Хочу проверить себя. Расшифровать теперь свой файл. Не подскажете как это можно сделать средствами билдера?
к примеру я делаю
lf_FileRead = FileRead( lf_FileHandle, in_Text )
DO WHILE lf_FileRead > 0
lf_FileRead = FileRead( lf_FileHandle, in_Text )
...
...
Рейтинг: 0 / 0
03.12.2019, 15:32
    #39897611
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Что значит "расшифровать"?

приведите свое понимание терминов: хэширование, шифрация, дешифрация
или внятно опишите задачу, что же Вам нужно
...
Рейтинг: 0 / 0
03.12.2019, 15:40
    #39897619
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Оказывается нужно хешировать не полностью файл csv, а только отдельные данные
и выглядеть это должно как-то так
CLIENT
5EEE266DF4AAFC647625D0FE6C5FB825
Можно ли это сделать средствами билдера и если да, то как? подскажите пожалуйста
...
Рейтинг: 0 / 0
03.12.2019, 16:14
    #39897645
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
хэш нельзя расшифровать, это что-то типа контрольной суммы. Для шифровки посмотрите в хэлпе билдера SymmetricEncrypt / SymmetricDecrypt, а чтобы перевести двоичные данные в строку смотреть тут .
...
Рейтинг: 0 / 0
04.12.2019, 10:05
    #39897965
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
alexis glinski
хэш нельзя расшифровать, это что-то типа контрольной суммы. Для шифровки посмотрите в хэлпе билдера SymmetricEncrypt / SymmetricDecrypt, а чтобы перевести двоичные данные в строку смотреть тут .


Спасибо за пример. У меня только вопрос этот алгоритм действительно подходит для sha256?
Какая то короткая получилась строка 0386AF0E

public function string of_numbertohexstring (readonly longlong all_number);String ls_hexstring
LongLong lll_first, lll_second
Char lc_symbols[0 To 15] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}

If all_number < 0 Then Return '--'
If all_number <= 255 Then
lll_first = all_number / 16
lll_second = Mod(all_number, 16)

ls_hexstring = lc_symbols[lll_first] + lc_symbols[lll_second]
Else
ls_hexstring = of_numbertohexstring(all_number / 256) + of_numbertohexstring(Mod(all_number, 256))
End If

Return ls_hexstring
end function
...
Рейтинг: 0 / 0
04.12.2019, 11:46
    #39898011
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
Нашла в нете такой пример. Подскажите какого типа должна быть переменная loo_HashBytes?

Код: vbnet
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.
integer li_rc
oleobject loo_Crypt
oleobject loo_Sb

//  This example requires the Chilkat Crypt API to have been previously unlocked.
//  See Unlock Chilkat Crypt for sample code.

loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat_9_5_0.Crypt2")
if li_rc < 0 then
    destroy loo_Crypt
    MessageBox("Error","Connecting to COM object failed")
    return
end if

//  Choose the hash algorithm.
//  Can be  "sha1", "sha256", "sha384", "sha512", "md2", "md5", "haval", "ripemd128", "ripemd160","ripemd256", or "ripemd320".
loo_Crypt.HashAlgorithm = "sha256"

//  The byte representation of the string matters when hashing.
//  Tell Chilkat that we want to use the utf-8 byte representation.
loo_Crypt.Charset = "utf-8"

loo_HashBytes = loo_Crypt.HashString("They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.")

//  Let's examine the hash as a hex string.
loo_Sb = create oleobject
li_rc = loo_Sb.ConnectToNewObject("Chilkat_9_5_0.StringBuilder")

loo_Sb.AppendEncoded(loo_HashBytes,"hex")
Write-Debug "SHA256 hash = " + loo_Sb.GetAsString()


destroy loo_Crypt
destroy loo_Sb
...
Рейтинг: 0 / 0
04.12.2019, 14:50
    #39898126
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэшировать по алгоритму sha256
hum_i
alexis glinski
хэш нельзя расшифровать, это что-то типа контрольной суммы. Для шифровки посмотрите в хэлпе билдера SymmetricEncrypt / SymmetricDecrypt, а чтобы перевести двоичные данные в строку смотреть тут .


Спасибо за пример. У меня только вопрос этот алгоритм действительно подходит для sha256?
Какая то короткая получилась строка 0386AF0E

public function string of_numbertohexstring (readonly longlong all_number);String ls_hexstring
LongLong lll_first, lll_second
Char lc_symbols[0 To 15] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}

If all_number < 0 Then Return '--'
If all_number <= 255 Then
lll_first = all_number / 16
lll_second = Mod(all_number, 16)

ls_hexstring = lc_symbols[lll_first] + lc_symbols[lll_second]
Else
ls_hexstring = of_numbertohexstring(all_number / 256) + of_numbertohexstring(Mod(all_number, 256))
End If

Return ls_hexstring
end function

внимательней не аргументы смотрите. lblb_sha1 это 32 байта, ну так сделайте цикл и двигайтесь по этому блобу функцией
BlobMid
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / хэшировать по алгоритму sha256 / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]