Как уже упоминалось, во многом зависит от того, насколько безопасным вы хотите, чтобы это было, разумный ответ - найти реализацию 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;
}