|
RSACryptoServiceProvider и ф-ии CryptoAPI из advapi32.dll: своё расшифровывают, чужое нет
|
|||
---|---|---|---|
#18+
Я пытаюсь наладить обмен данными между приложением, написанным на .NET, и приложением, которому доступно только Windows API. Для удобства изучения проблемы я объединил оба приложения в одно, см. код ниже. В System.Security.Cryptography.RSACryptoServiceProvider создаю 1024-битную пару RSA, шифрую фразу "Hello, world!" публичным ключом в 128 байт и успешно расшифровываю их секретным ключом. Передаю оба ключа через BLOB в CryptoAPI, где они нормально читаются (потому что если изменить любой байт ключа, то при чтении возникает ошибка). С помощью CryptoAPI ту же самую фразу "Hello, world" публичным ключом шифрую в 128 байт и успешно расшифровываю их секретным ключом. Проблема: зашифрованные 128 байт из System.Security.Cryptography.RSACryptoServiceProvider не может расшифровать CryptoAPI и, наоборот, зашифрованные 128 байт из CryptoAPI не может расшифровать System.Security.Cryptography.RSACryptoServiceProvider. В обоих случаях возникает ошибка "Bad data", в случае CryptoAPI можно посмотреть её номер: 0x80090005 (константа NTE_BAD_DATA). Пожалуйста, помогите от этой проблемы избавиться. Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 13:16 |
|
RSACryptoServiceProvider и ф-ии CryptoAPI из advapi32.dll: своё расшифровывают, чужое нет
|
|||
---|---|---|---|
#18+
Андрей Усачёв, http://rsdn.org/forum/dotnet/4111151?tree=tree ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 14:53 |
|
RSACryptoServiceProvider и ф-ии CryptoAPI из advapi32.dll: своё расшифровывают, чужое нет
|
|||
---|---|---|---|
#18+
Спасибо вам огромное. В обоих случаях помогло выполнение перед расшифровкой: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 16:00 |
|
RSACryptoServiceProvider и ф-ии CryptoAPI из advapi32.dll: своё расшифровывают, чужое нет
|
|||
---|---|---|---|
#18+
Добавил 2 строки, переворачивающие массив, и в 1 строке поменял копирование ссылки на массив на копирование данных массива: Работающий вариант Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94.
Теперь вывод такой: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 16:14 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1399678]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
8ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 126ms |
0 / 0 |