Совместимое шифрование между C# и PHP, ColdFusion, Ruby, Python

Если вы используете Polymer и Firebase (полимерный огонь), см. этот ответ: https://stackoverflow.com/a/46698801/1821603

По существу вы создаете вторичный для обработки новой регистрации пользователя, не затрагивая текущего пользователя.

7
задан Community 5 June 2015 в 22:03
поделиться

8 ответов

Предположение, что у Вас есть безопасный способ совместно использовать ключ (ли шифрование RSA его, извлечение по SSH или ссылке HTTPS или вызову другого разработчика на защищенной телефонной линии), какое-либо основное современное шифрование (как AES, как упомянуто @Ed Haber) подошло бы. Я был бы второй его предложение AES. Должны быть библиотеки для PHP, VB, Ruby, и т.д.

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

4
ответ дан 6 December 2019 в 19:44
поделиться

Я использовал бы AES для объемного шифрования данных и RSA для шифрования Ключа AES. Если данные являются достаточно маленькими, затем просто шифруют все это с RSA.

2
ответ дан 6 December 2019 в 19:44
поделиться

Если Вы будете подразумевать, что для третьих лиц должно быть невозможно дешифровать данные, то Вы захотите использовать асимметричный алгоритм шифрования, такой как RSA. Это будет третье лицо для шифрования данных с открытым ключом, и затем только можно дешифровать данные с закрытым ключом, который Вы не раскрываете. Должны быть реализации RSA, доступного для всех языков, которые Вы упомянули.

Если Вы не заботитесь, может ли третье лицо дешифровать данные, то AES является способом пойти. У Вас будет один ключ, который Вы совместно используете с третьими лицами. Этот ключ используется и для шифрования и для дешифрования.

3
ответ дан 6 December 2019 в 19:44
поделиться

Ed Haber сказал

Я использовал бы AES для объемного шифрования данных и RSA для шифрования Ключа AES. Если данные являются достаточно маленькими, затем просто шифруют все это с RSA.

Я думаю, что это - хорошее решение. То, что я сделал бы, имеют Ваше приложение, публикуют API для получения общедоступного ключа RSA. Когда я, третья сторона хочет отправить Вам что-то, которое это получает открытый ключ. Это затем генерирует сеансовый ключ, чтобы сделать фактическое шифрование с помощью блочного шифра, (т.е. AES), и отправляет ключ Вам путем шифрования с открытым ключом. Вы дешифруете сеансовый ключ со своим закрытым ключом. Третье лицо затем шифрует данные, которые это хочет отправить Вам с AES (использующий дополнительную схему, которую Вы также публикуете), и отправляет его Вам. Вы дешифруете его с помощью сеансового ключа.

Существуют некоторые проблемы с методом выше. Так как Вы не отправляете информации (кроме публикации Вашего открытого ключа, Вы не можете управлять, как сеансовый ключ сгенерирован. Это означает, что третьи лица могут использовать очень небезопасные пути к генерации сеансового ключа, и Вы никогда не будете знать. Вторая проблема - все, кто хочет отправить Вас, данные должны заполнить данные для AES таким же образом, Вы делаете. Таким образом, необходимо будет удостовериться каждые координаты. Второй выпуск не к большому, но первой могла быть проблема особенно, если Вы не доверяете третьим лицам, все так очень для генерации действительно хороших сеансовых ключей от пользы криптографически защищает генератор случайных чисел

2
ответ дан 6 December 2019 в 19:44
поделиться

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

Вот пример PHP:

function XOREncryption($InputString, $KeyPhrase){

    $KeyPhraseLength = strlen($KeyPhrase);

    for ($i = 0; $i < strlen($InputString); $i++){

        $rPos = $i % $KeyPhraseLength;

        $r = ord($InputString[$i]) ^ ord($KeyPhrase[$rPos]);

        $InputString[$i] = chr($r);
    }

    return $InputString;
}
1
ответ дан 6 December 2019 в 19:44
поделиться

ColdFusion имеет шифрование, и дешифруйте функции, способные к обработке диапазона алгоритмов и кодировки, включая AES, рекомендуемую выше.

Информация в: http://www.cfquickdocs.com/cf8/?getDoc=encrypt#Encrypt

Быстрый пример кода:

Key = generateSecretKey( 'AES' , 128 )

EncryptedText = encrypt( Text , Key , 'AES' , 'Hex' )

Text = decrypt( EncryptedText , Key, 'AES' , 'Hex' )

Схожая функциональность доступна с этой библиотекой для PHP:
http://www.chilkatsoft.com/p/php_aes.asp

... и Java, Python, Ruby и другие...
http://www.example-code.com/java/crypt2_aes_matchPhp.asp
http://www.example-code.com/python/aes_stringEncryption.asp

1
ответ дан 6 December 2019 в 19:44
поделиться

Кажется, что RSA является алгоритмом для Вас.

0
ответ дан 6 December 2019 в 19:44
поделиться

Почему бы не Ваш сервер выставляется по HTTPS? Тем путем любой клиент, который может обработать HTTPS, может использовать сервис надежно.

0
ответ дан 6 December 2019 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: