как зашифровать данные в R? - PullRequest
17 голосов
/ 27 апреля 2011

Я добавляю обработчик sentry в пакет R . в настоящее время django-sentry проверяет клиента (приложение, отправляющее записи журнала) на основе общего ключа, который передается в виде открытого текста по защищенному каналу.

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

Хорошо, не «если бы это было возможно», но «как это сделать» и не сделал ли это кто-то уже.


после взаимодействия с автором django-sentry мы выбрали hmac, который я реализовал в пакете digest R (версия 0.5+ содержит его). Это не отвечает на вопрос «как зашифровать данные с использованием R», но решает проблему, которая легла в основу моего первоначального вопроса.

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

Ответы [ 3 ]

7 голосов
/ 14 сентября 2013

Вы также можете найти подходящую функцию в пакете PKI от автора Simon Urbanek.

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

Пример кода из учебника:

require(PKI)
key <- PKI.genRSAkey(2048)
x <- charToRaw("Hello, world!")
e <- PKI.encrypt(x, key)
y <- PKI.decrypt(e, key)
stopifnot(identical(x, y))
print(rawToChar(y))

дает в результате: [1] "Hello, world!"

пока зашифрованное сообщение e было:

  [1] 36 83 d3 70 0a 67 b5 05 a6 40 1e 37 28 b9 4e 28 f1 31 92 14 2c 35 c8 8a 61 93 1e 04 62 01 da 3b 2b a0 75 1c 10 58 26
 [40] e4 77 da 7a 47 3f 4e 44 29 8e 97 6f 62 b1 98 44 ba 18 ef 57 1e 9e 9c 27 a8 6e 9c 7b c7 8b c0 c3 a3 00 e2 67 98 8b 6e
 [79] 1a 93 c6 d6 ed 4b 54 e5 7a 07 d7 06 ef a6 bb 36 6a 7f 57 06 b9 15 03 f6 51 3f 07 48 cb f4 2d 25 15 be 42 de f4 8a 06
[118] 72 89 b1 e3 04 d3 ec 80 99 f0 66 0f 84 e1 b5 af 23 24 a1 36 8e 62 65 ae 19 fb 77 d1 36 06 ae 71 95 ee 57 aa 68 5a 6b
[157] 4e 28 ba a2 0d 17 78 11 6c 7f 1b b3 ce 31 65 a9 d3 71 89 76 f9 19 a0 7a bf 02 dd c9 1f cb 9c 39 25 d4 48 a2 23 83 26
[196] b4 a9 b1 40 f5 1d 46 21 35 12 52 73 09 9b f3 52 e1 9e 0d 2a 9b ff 70 81 41 24 49 ed 58 b2 61 dc 3e c9 b3 b2 b1 37 e0
[235] 48 76 18 bf b0 e5 c2 d9 2b 92 2f 6b 49 dd e0 93 b7 10 f8 ba d2 8a
4 голосов
/ 28 апреля 2011

Помогает ли это вам впереди: Дайджест пакета ?Он содержит несколько функций хеширования.Насколько мне известно, асимметричное шифрование такое же, как хеширование ...

3 голосов
/ 18 июня 2016

Это старая ветка, но в случае, если другие сталкиваются с этим, кажется, есть пакет secure от Hadley.В файле readme указано:

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

Защита построена поверх асимметричного (открытый / закрытый ключ)) шифрование.Secure генерирует случайный мастер-ключ и использует его для шифрования (с помощью AES256) каждого файла в хранилище /.Главный ключ нигде не хранится в незашифрованном виде;вместо этого, зашифрованная копия сохраняется для каждого пользователя, используя его собственный открытый ключ.Каждый пользователь может затем расшифровать зашифрованный главный ключ, используя свой закрытый ключ, а затем использовать его для расшифровки каждого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...