Шифрование в ANSI C, дешифрование в Java - PullRequest
0 голосов
/ 05 мая 2011

Мне нужно отправить короткую строку из приложения ANSI C в приложение Java через сокет - уже сделано. Потому что его важные данные, я должен зашифровать его, используя пароль типа «abc123». Как мне сделать это самым простым способом?

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Под "сокетом" я предполагаю, что вы имеете в виду соединение TCP / IP.В этом случае вам следует рассмотреть возможность использования Secure Sockets Layer (SSL).SSL в значительной степени решает большинство проблем безопасности, связанных с отправкой данных по сети.Единственное, что вам нужно проработать, - это как распределить ключи по каждому концу канала.

Я настоятельно рекомендую вам не катить свою собственную систему.С Crypto сложно разобраться, поэтому используйте существующую, хорошо протестированную реализацию.

Если вы говорите о доменном сокете Unix, то вам, вероятно, не нужно беспокоиться о шифровании, поскольку доменные сокеты просто межпроцессные.трубы.

1 голос
/ 05 мая 2011

Как уже упоминалось, во многом зависит от того, насколько безопасным вы хотите, чтобы это было, разумный ответ - найти реализацию Java и C одной и той же криптосистемы и использовать ее.

Если вы готовы принять более низкий уровень безопасности, который обычно приходит с домашним пивоварением, то, как я полагаю, вы используете «самый простой способ» в своем вопросе и предполагаете, что источник и среда выполнения для обоих концов безопасны. И.Е. Вам нужно только беспокоиться о перехвате данных в пути. Вы можете просто использовать любой пароль, который вы пожелаете, в качестве начального числа для генератора псевдослучайных чисел (остаток от деления большого простого числа на индекс байтов или аналогичный) и XOR байтов данных с генерируемыми случайными числами. Не самый безопасный, но очень быстрый для реализации.

uint8_t encrypt(uint8_t iData, size_t iPos) {
  // Super large prime, our 'password', best kept super secret
  const uint64_t iSeed = 32416190071; 
  // Mostly to stop divide by zero
  // Also starting in the obvious place gives more info on the prime
  const size_t iOffset = 10;

  uint8_t iPad = iSeed % (iPos + iOffset);

  return iPad^iData;
}
0 голосов
/ 29 декабря 2012
Char encrypt(char ch) {
 Return (ch ^0x55);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...