void CSocketDlg::OnBnClickedBsend()
{
int iLen;
int iSent;
CProgressCtrl* pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);
char pbuf[1025];
//синхронизация элементов управления с переменными
UpdateData(TRUE);
//имеется ли сообщение, которое нужно послать?
if (m_strMessage != "")
{
//получить длину сообщения
iLen = m_strMessage.GetLength();
//отправить сообщение
//----------------------------ШИФРОВАНИЕ-------НАЧАЛО----
if (isFileWithKeyOpened) //Проверяем есть ли файл с ключем
{
AES_byte Key[32];
int Nk = _read(KEYFILE,Key,33); //читаем ключ
switch(Nk) //определяем длину ключа.
{
case 16:Nk = 4;break;
case 24:Nk = 6;break;
case 32:Nk = 8;break;
default:return;
}
FillTables();
KeyExpansion(Key,Nk);
AES_byte ibuf[16];
AES_byte obuf[16];
int sOUTPUT;
int sINPUT;
sINPUT=open("sINPUT.txt", O_CREAT | O_RDWR | O_BINARY)
sOUTPUT=open("sOUTPUT.txt", O_CREAT |O_RDWR | O_BINARY)
//сливаем сообщение в файл
write(sINPUT, m_strMessage, iLen)
long pos;
//устанавливаем позицию в начало
pos = lseek(sINPUT, 0L, SEEK_SET);
long InputLength = filelength(sINPUT);
//записываем в файл длину сообщения
write(sOUTPUT,&InputLength,4)
for (long i=0, ii=0;i<=InputLength/16;i++,ii++)
{
//чиатем 16 символов из файла
read(sINPUT,ibuf,16)
//СОБСТВЕННО ШИФРОВАНИЕ
Cipher(ibuf,obuf);
//Записываем 16 символов в файл
write(sOUTPUT,obuf,16)
}
//----------------------------ШИФРОВАНИЕ-------КОНЕЦ-----
long OutputLength = filelength(sOUTPUT);
pos = lseek(sOUTPUT, 0L, SEEK_SET);
//читаем шифр-сообщение из файла
read(sOUTPUT,pbuf,OutputLength)
m_strAESMessage = pbuf; <---КОСЯК ТУТ
//передаем в сокет
iSent = m_sConnectSocket.Send(m_strAESMessage OutputLength); <--И ТУТ
close(sOUTPUT);
close(sINPUT);
... остальной завершающий код
}
Чтение из файда в CString
Задача: файл содержит текст на русском и английском, необходимо прочитать этот текст в строку формата CString. Как это сделать???
Цитата: mohito
Задача: файл содержит текст на русском и английском, необходимо прочитать этот текст в строку формата CString. Как это сделать???
Ты будешь весь файл читать в одну строку ? Или может все таки необходимо организовать построчное чтение текста из файла пока не будет достигнут конец файла и вывести текст,например в текстовом поле ?
Есть приложение типа чат, которое принимает строку от юзера в EditControl и передает его посредствам сокетов в другое аналогичное приложение.
Есть код, который принимает из файла текст и кодирует/декодует его AES'ом.
Необходимо встроить AES в этот "псевдо чат".
Делаю так:
1. Получаю сообщение
2. Записываю его в файл sINPUT.txt
3. Записываю в файл sOUTPUT.txt длину сообщения
4. Читаю сообщение из sINPUT и подаю на вход алгоритму кодирования, результат записываю в sOUTPUT
5. читаю шифр-сообщение из sOUTPUT и передаю с сокет.
Дальше по идее должно быть в обратном порядке.
Шифр-сообщение корректно считывается в pbuf(см. код) но через сокет проходит только один символ=(((
Код:
Код довольно сырой, главное что бы хоть как-то заработало.