• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Бинарные Данные Из Файла R5

  • Автор темы motogarri
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
capicom это интерфейс для разных методов ширования, но т.к. большинство стандартны - зачем он в ваше задаче?
если шифруем 3des или чем-то подобным - все это уже есть в java

Добавлено: ну вот ещё такое есть
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
Если byte[] buffer больше мегабайта - ошибка StackOverflowError
Это String ограничен мегабайтом?
надо учитывать тот факт, что jvm имеет заранее заданный объем памяти (notes.ini)
если передача параметра сущ через стэк (а оно так и будет) - то и получим переполнение
выход - поставить значение в notes.ini соответ. максимальному размеру файла


Добавлено: ещё можно почитать про "другой" вариант
 
M

motogarri

А в шестерке нельзя подключить серез COM дллку?

import com.ms.activeX.ActiveXComponent;
ActiveXComponent utils = new ActiveXComponent("CAPICOM.Utilities");

Говорит что Package com.ms.activeX.ActiveXComponent not found in import
 
M

motogarri

Разобрался наконец. Оказывается в лотусный Стрим можно кусками байты писать. Сразу не пришло в голову((((

В capicome есть такой класс CAPICOM.Utilities который содержит методы ByteArrayToBinaryString и BinaryStringToByteArray. В итоге получается у меня такой порядок:

1. Получаю массив из файла и преобразовываю его в строку
Код:
	While Not stream.IsEOS
buffer = stream.Read(32000)
binData = binData + util.ByteArrayToBinaryString(buffer)
Wend

2. Строку шифрую, отправляю адресату

3. На той стороне расшифровываю

4. Расшифрованную строку записываю в файл
Код:
	blocSize = 16000
data = envelopedData.Content
position = 1
bloc = "1"

While bloc <> ""
bloc = Mid(data, position, blocSize)
If bloc <> "" Then
Call stream2.Write(util.BinaryStringToByteArray(bloc))
position = position + blocSize
End If
Wend

Call stream2.Close()


Спасибо всем за помощь.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
если вопрос просто в шифровании - выкинуть COM нафик
ну зачем он вам - никак не пойму

 
M

motogarri

Дело не только в шифровании. Вся криптографися на внешнем криптопровайдере. А COM из-за простоты и скорости разработки. В сроках на разработку обычно не учитывается время на обучение((
Единственный затык был с этими преобразованиями из массива в строку и обратно и он решен. Остальное все просто и быстро реализуемо.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
вот простой пример
и никаких фокусов с памятью

Добавлено:
Вся криптографися на внешнем криптопровайдере
чем это продиктовано
 
M

motogarri

чем это продиктовано
Техзаданием)))
Пример интересный. Когда со временем, столкнусь с какими-нибудь еще ограничениями, мне эти ссылки пригодятся.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!