powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / хэшировать по алгоритму sha256
15 сообщений из 15, страница 1 из 1
хэшировать по алгоритму sha256
    #39897043
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
подскажите пожалуйста как можно хэшировать файл в билдере? хэшировать по алгоритму sha256
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897076
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вижу примеры в нете, но они связаны с созданием 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
хэшировать по алгоритму sha256
    #39897137
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какая версия PB? Какая БД? Может проще всего в MS SQL:
Код: sql
1.
2.
3.
HASHBYTES ( '<algorithm>', { @input | 'input' } )  
  
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897146
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия PowerBuilder 2017 R3 Build 1880
БД sybase
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897176
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i

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


https://www.chilkatsoft.com/refdoc/xChilkatCrypt2Ref.html#method66
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897413
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашла в хелпе пример использования 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
хэшировать по алгоритму sha256
    #39897488
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,
посмотрите здесь и здесь , там много полезного и готового.
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897513
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 )
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897608
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
хэшировать по алгоритму sha256
    #39897611
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "расшифровать"?

приведите свое понимание терминов: хэширование, шифрация, дешифрация
или внятно опишите задачу, что же Вам нужно
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897619
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается нужно хешировать не полностью файл csv, а только отдельные данные
и выглядеть это должно как-то так
CLIENT
5EEE266DF4AAFC647625D0FE6C5FB825
Можно ли это сделать средствами билдера и если да, то как? подскажите пожалуйста
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897645
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хэш нельзя расшифровать, это что-то типа контрольной суммы. Для шифровки посмотрите в хэлпе билдера SymmetricEncrypt / SymmetricDecrypt, а чтобы перевести двоичные данные в строку смотреть тут .
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39897965
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
...
Рейтинг: 0 / 0
хэшировать по алгоритму sha256
    #39898011
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашла в нете такой пример. Подскажите какого типа должна быть переменная 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
хэшировать по алгоритму sha256
    #39898126
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / хэшировать по алгоритму sha256
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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