Как мне шифровать данные в R?
Я добавляю R logging package. в настоящее время django-sentry проверяет клиента (запись журнала отправки приложения) на основе общего ключа, который перемещается в открытом тексте в защищенном канале.
Мне было интересно, можно ли сделать шифрование с R, предпочтительно асимметричным, открытым ключом, но я не нахожу ничего полезного.
все в порядке, а не "если это было возможно", но "как это сделать", и кто-то уже сделал это.
после взаимодействия с автором django-sentry мы выбрали hmac
, который я реализовал в пакете digest
R (в версии 0.5+). Это не отвечает на вопрос "как шифровать данные с помощью R", но решает проблему, которая послужила основой для моего первоначального вопроса.
В этот момент я больше не активно работаю над асимметричной подпиской в R, однако, если вы заинтересованы в этом, и хотите внести свой вклад в идеи или код, оставьте здесь примечание!
Ответы
Ответ 1
Вы также можете найти подходящую функцию в пакете PKI от автора Саймона Урбанека.
Этот пакет предоставляет функции 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
Ответ 2
Помогает ли вам это:
дайджест-пакет? Он содержит несколько функций хэширования. Насколько мне известно, асимметричное шифрование такое же, как и хеширование...
Ответ 3
Это старый поток, но в случае, если другие сталкиваются с этим, похоже, там есть secure пакет от Hadley. В readme указано:
Защищенный пакет обеспечивает безопасное хранилище в общедоступном репозитории кода. Он позволяет хранить конфиденциальную информацию в публичном репозитории, чтобы только избранные люди могли ее прочитать. Это особенно полезно для тестирования, так как теперь вы можете хранить личные учетные данные в своем публичном репо, без их чтения в мире.
Secure построен поверх асимметричного (общедоступного/закрытого ключа) шифрования. Secure генерирует случайный мастер-ключ и использует его для шифрования (с AES256) каждого файла в хранилище /. Главный ключ не сохраняется в любом месте без шифрования; вместо этого зашифрованная копия сохраняется для каждого пользователя, используя свой собственный открытый ключ. Каждый пользователь может расшифровать зашифрованный главный ключ с помощью своего закрытого ключа, а затем использовать его для дешифрования каждого файла.