powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вычислить хеш по алгоритму SHA-512, используя системную dll
13 сообщений из 13, страница 1 из 1
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37984826
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

Нужно получить хэш текстового файла по алгоритму SHA512. По ссылке вышел на проект Crypto
http://www.sql.ru/forum/actualthread.aspx?tid=756229&hl=sha%20512
Если указать
Код: powershell
1.
in_crypto.iHashAlgorithm		= in_crypto.CALG_SHA_512


то функция вываливается в ошибку

Код: powershell
1.
2.
3.
4.
5.
If Not CryptCreateHash(lul_hProv, iHashAlgorithm, 0, 0, lul_hHash) Then
	of_GetLastError(lul_error, ls_msgtext)
   CryptReleaseContext(lul_hProv, 0)
	SignalError(lul_error, "CryptCreateHash:~r~n~r~n" + ls_msgtext)
End If



WinXP SP3

Заранее спасибо
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37984834
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37984969
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37985059
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел инфу что advapi32.dll в XP не поддерживает SHA512, пробовал от семерки зарегистрировать - не хочет региться
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37985201
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37985437
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37986087
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog13,

АПать тут бесполезно (ваш вопрос еще несколько недель а то и месяцев будет на первой странице).
Все, кто мог ответить на ваш вопрос, уже прочли его. И если нет ответов, то не потому что вопрос не увидели, а потому что ответа нет.

По теме.
Я вам рекомендую написать сначала простейшую программу на С или С++ вызывающую ту функцию и добиться чтобы она работала.
Потому что нет смысла возиться с оберткой в PB если ф-я в принципе не работает.
К тому же проблему, сформулированную в терминах С можно поднять на соответствующий форумах, а там кол-во тех кто может знать ответ на порядки выше чем здесь.
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37987534
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
В том то и дело, что приложение Crypto работает (вычисляет хеш), но алгоритм SHA-512 не работает. в msdn читал про mscorlib.dll.
Пример
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub test()
Dim text As Object
Dim SHA512 As Object

Set text = CreateObject("System.Text.UTF8Encoding")
Set SHA512 = CreateObject("System.Security.Cryptography.SHA512Managed")

Debug.Print ToBase64String(SHA512.ComputeHash_2((text.GetBytes_4("Hello World"))))

End Sub



а как это в PB завернуть?
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37988181
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog13,

Я не знаю как это развернуть, но даже если это возможно, вы уверены что вы хотите в свой проект добавить зависимость от .Net?
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37988249
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хеширование файлов не является целью моего проекта. С PB только начал работать и поэтому ищу что-нить попроще (без написания алгоритма), как в вышеописанном примере: вызвал функцию - получил хэш.
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37988738
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog13Хеширование файлов не является целью моего проекта. С PB только начал работать и поэтому ищу что-нить попроще (без написания алгоритма), как в вышеописанном примере: вызвал функцию - получил хэш.Читаем здесь
MSDN BlogOur "Microsoft Base/Strong/Enhanced Cryptographic Providers" are implemented on Rsaenh.dll. If you try to use CryptCreateHash with any SHA-2 Algid (CALG_SHA_256, CALG_SHA_384, CALG_SHA_512) and any of these CSP, you will still get a NTE_BAD_ALGID error on XP SP3. Why? The issue is that those Algid's are only valid with providers of type PROV_RSA_AES , and these CSP are of type PROV_RSA_FULL .
И далее, про реестр.

Примерный код:
Код: 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.
36.
n_cryptoapi in_crypto
string docname, named
integer value
value = GetFileOpenName("Select File", &
		+ docname, named, "TXT", &
		+ "Text Files (*.TXT),*.TXT" )

IF value = 1 THEN 
	integer li_FileNum
	long flen, bytes_read, loops, i
	blob b, tot_b
	
	flen = FileLength(docname)
	li_FileNum = FileOpen(docname, StreamMode!, Read!, LockRead!)
	IF flen > 32765 THEN
			IF Mod(flen, 32765) = 0 THEN
				loops = flen/32765
			ELSE
				loops = (flen/32765) + 1
			END IF
	ELSE
			loops = 1
	END IF
	FOR i = 1 to loops
			bytes_read = FileRead(li_FileNum, b)
			tot_b = tot_b + b
	NEXT
	FileClose(li_FileNum)

	string hash
	in_crypto.iHashAlgorithm		= in_crypto.CALG_SHA_256
	in_crypto.iCryptoProvider		= in_crypto.MS_ENH_RSA_AES_PROV
	in_crypto.iProviderType			= in_crypto.PROV_RSA_AES
	hash =  in_crypto.of_gethashvalue( tot_b )
	messagebox ("hash", hash)
END IF


Но! Есть одна тонкость.
В функции of_gethashvalue есть объявление
Код: sql
1.
2.
3.
//Blob{20} lblob_hash 
//может не хватить. Замените на что-нибудь типа:
Blob{512} lblob_hash. 


На Win7 отрабатывает нормально.
Кроме того, лично мне очень не нравятся не инициализированные строковые переменные, которые используются в апишных вызовах, поэтому рекомендую добавить что-нибудь. вроде
Код: sql
1.
ls_msgtext = space(1024)


К сожалению, гарантировать работоспособность не могу, под рукой нет WinXP. Пробуйте.
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37988785
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99,
Спасибо огромное за помощь. Завтра попробую - отпишусь по результату
...
Рейтинг: 0 / 0
Вычислить хеш по алгоритму SHA-512, используя системную dll
    #37990033
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99,
СПАСИБО за помощь, действительно выручили. Натыкался на эту статью, видать, не придал особого значения.
Код: powershell
1.
2.
3.
	
        in_crypto.iCryptoProvider	        = in_crypto.MS_ENH_RSA_AES_PROV
	in_crypto.iProviderType			= in_crypto.PROV_RSA_AES



у меня WinXP SP3, все работает (сверился c http://hash.online-convert.com/sha512-generator )
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вычислить хеш по алгоритму SHA-512, используя системную dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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