|
|
|
dbms_crypto.Encrypt
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, столкнулся с проблемой. Внешнее приложение должно передавать зашифрованную строку серверу Oracle, где должна произойти её дешифровка. Шифровку необходимо делать по алгоритму DES. Поскольку внешнее приложение на Delphi, то поискав в инете, нашел несколько реализаций алгоритма DES, выбрал одну из них. Дабы полностью не верить автору - сравнил алгоритм и перестановочные таблицы с описанием алгоритма в Википедии . С незначительными корректировками (у автора были ошибки в перестановочных таблицах) реализация оказалась рабочей, по крайней мере шифровку/дешифровку внутри себя выполняет прекрасно. Однако мне так и не удалось добиться, чтобы результат шифровки строки в Oracle и результат шифровки в Delphi совпадали. Например в Oracle Шифровка DBMS_CRYPTO и DBMS_OBFUSCATION_TOOLKIT Исходный скрипт Код: plaintext 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. Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Исходная строка: 0110000101100010011000110110000101100010011000110011000100110010 Зашифрованная строка: 1111000101011111110010110111100101110111001111110000101101001011 Расшифрованная строка: 0110000101100010011000110110000101100010011000110011000100110010 В Delphi Результат выполнения прикрепленной программы Исходная строка: 0110000101100010011000110110000101100010011000110011000100110010 Зашифрованная строка: 0111011101010001111101010100111110001010010010110011000100101111 Расшифрованная строка: 0110000101100010011000110110000101100010011000110011000100110010 Получилось, что внутренние шифровки/расшифровки и там и там работаю нормально, но почему результаты шифровки не совпадают? Это не позволяет шифровать данные на клиенте и передавать их для расшифровки на сервер. Подскажите, пожалуйста, чего я не учитываю, или не знаю. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 15:47 |
|
||
|
dbms_crypto.Encrypt
|
|||
|---|---|---|---|
|
#18+
Shurikas, Может в этом дело: Код: plaintext 1. 2. 3. 4. 5. 6. 7. У Вас в Делфи (не смог скачать и посмотреть) что используется в качестве начальной синхропосылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 18:15 |
|
||
|
dbms_crypto.Encrypt
|
|||
|---|---|---|---|
|
#18+
iehf, Разобрался. Действительно CBC - это тоже было неправильно в моем случае, сейчас использую ECB. И также необходимо при преобразовании в RAW указывать кодировку. Очень много проблем было в Delphi-коде. После переделки всё сошлось. Oracle в данном случае всё делает по стандартному алгоритму, использую стандартные таблицы перестановок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:38 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=145&tid=1885241]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
338ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 689ms |

| 0 / 0 |
