17

我正在向 R 日志记录包添加一个哨兵处理程序。目前django-sentry根据在安全通道中以明文形式传输的共享密钥验证客户端(发送日志记录的应用程序)。

我想知道是否可以从 R 进行加密,最好是基于非对称的公钥,但我发现没有任何相关性。

好吧,不是“如果可能的话”,而是“如何做到这一点”以及是否有人已经这样做了。


在与 django-sentry 的作者互动后,我们选择了hmac,我在digestR 包中实现了它(版本 0.5+ 包含它)。这并没有回答“如何使用 R 加密数据”的问题,但它解决了构成我最初问题的基础的问题。

在这一点上,我不再积极从事 R 中的非对称加密工作,但是,如果您对此感兴趣并且想贡献想法或代码,请在此处留言!

4

3 回答 3

7

您还可以在作者 Simon Urbanek的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
于 2013-09-14T07:45:15.293 回答
4

这对您有帮助吗: 消化包?它拥有几个散列函数。据我所知,非对称加密与散列相同......

于 2011-04-28T08:04:40.080 回答
3

这是一个旧线程,但如果其他人遇到这个问题,Hadley 似乎有一个安全包。自述文件指出:

安全包在公开可用的代码存储库中提供了一个安全保险库。它允许您将私人信息存储在公共存储库中,以便只有选定的人才能阅读它。这对于测试特别有用,因为您现在可以将私有凭据存储在公共存储库中,而不会被世界读取。

Secure 建立在非对称(公钥/私钥)加密之上。Secure 生成一个随机主密钥,并使用它来加密(使用 AES256)vault/ 中的每个文件。主密钥不会以未加密的方式存储在任何地方;相反,使用他们自己的公钥为每个用户存储一个加密副本。每个用户都可以使用他们的私钥解密加密的主密钥,然后使用它来解密每个文件。

于 2016-06-18T11:10:43.987 回答