|
CryptoApi в PB и Oracle dbms_crypto
|
|||
---|---|---|---|
#18+
Имеем скрипт на PL/SQL: declare passwordStr varchar2(8); passwordKeyStr varchar2(16); passwordRaw raw(128); passwordKeyRaw raw(128); TDES_ECB_NONE constant pls_integer := dbms_crypto.ENCRYPT_3DES_2KEY + dbms_crypto.CHAIN_ECB + dbms_crypto.PAD_NONE; passwordHash raw(1024); begin passwordStr := 'ABCDEFJH'; passwordKeyStr := rpad(passwordStr, 16, chr(32)); passwordRaw := utl_raw.cast_to_raw(passwordStr); passwordKeyRaw := utl_raw.cast_to_raw(passwordKeyStr); passwordHash := dbms_crypto.encrypt(src => passwordRaw, typ => TDES_ECB_NONE, key => passwordKeyRaw); dbms_output.put_line('> Password hash (encrypted DES3 hex value): ' || rawtohex(passwordHash)); end; Как написать аналог на PowerBuilder 9.0, используя библиотеку CryptoApi, если: - неизвестно какой провайдер используется Oracle - непонятно какой алгоритм хэширования используется Oracle - параметр PAD_NONE не описан в Wincrypt.h Буду благодарен за любую информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2013, 15:00 |
|
CryptoApi в PB и Oracle dbms_crypto
|
|||
---|---|---|---|
#18+
cherry107Имеем скрипт на PL/SQL: ... Как написать аналог на PowerBuilder 9.0, используя библиотеку CryptoApi Какова цель этого упражнения? cherry107 - неизвестно какой провайдер используется Oracle - непонятно какой алгоритм хэширования используется Oracle cherry107 - параметр PAD_NONE не описан в Wincrypt.h Код: plsql 1. 2. 3. 4. 5. 6.
Например,так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: sql 1. 2.
Код: sql 1. 2. 3.
Устроит? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2013, 19:17 |
|
CryptoApi в PB и Oracle dbms_crypto
|
|||
---|---|---|---|
#18+
Спасибо за совет. Нет не устроит. Цель упражнения - обойтись вообще без Oracle. Только PowerBuilder 9 и библиотеки Advapi32.dll ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2013, 20:37 |
|
CryptoApi в PB и Oracle dbms_crypto
|
|||
---|---|---|---|
#18+
Рассмотрите этот пример и найдите ответ на свой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2013, 23:41 |
|
CryptoApi в PB и Oracle dbms_crypto
|
|||
---|---|---|---|
#18+
Уважаемый AIS, вопросы возникают именно при использовании тех функций, которые описаны в указанной Вами ссылке. Конечно можно перебрать все провайдеры и алгоритмы хэширования, но что такое PAD_NONE похоже знает только Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 09:21 |
|
CryptoApi в PB и Oracle dbms_crypto
|
|||
---|---|---|---|
#18+
cherry107Конечно можно перебрать все провайдеры и алгоритмы хэширования, но что такое PAD_NONE похоже знает только Oracle. Я точных ответов не знаю, но могу предположить: 1) В примере на PL/SQL хеширования нет, соответственно в CryptEncrypt нужно передать 0 в качестве хеша (хотя вся эта процедура в целом является реализаций некого хеша над паролем). Там используется шифрование 3DES с двумя ключами (1-й и 3-й ключ из 3-х - совпадают). В качестве этих двух ключей выступает пароль дополненный пробелами до 16 байтов (по 8 байтов на ключ). При этом при импорте ключей через CryptImportKey() для использования в CryptoAPI вам надо их рассматривать как 3 ключа (см. выше). 2) PAD_NONE согласно доке оракла означает что данные для шифрования уже имеют длину кратную блоку шифрования (8 байтов в 3DES) и их не требуется дополнять перед шифрованием. С другой стороны, судя по PL/SQL коду данные как раз не кратны 8 :) Код: sql 1.
Непонятно как оно должно работать. Чтобы получить тот же эффект что и в оракле вам видимо при вызове функции CryptEncrypt нужно параметр Final передать FALSE, чтобы функция не пыталась дополнять шифруемый пароль до кратного 8. См. тут пример http://www.gotdotnet.ru/forums/2/18751/90681/#post90681 Только заменить алг. с DES на 3DES (и не забыть ключ с 8 до 24 байтов расширить), режим с CBC на ECB. Вобщем доработать напильником :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 10:54 |
|
|
start [/forum/topic.php?fid=15&msg=38511183&tid=1335368]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 277ms |
0 / 0 |