2011-04-27 99 views
17

我正在给R logging package添加一个sentry handler。当前django-sentry基于在安全通道中以明文传播的共享密钥验证客户端(应用程序发送日志记录)。我如何加密R中的数据?

我想知道是否有可能从R做加密,最好是不对称的,基于公钥的,但我觉得没有什么关系。

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


与Django的哨兵的作者互动之后,我们选择了hmac,这是我的digest [R封装内(版本0.5+包含它)来实现。这是而不是回答了“如何使用R加密数据”的问题,但它解决了形成我最初问题的基础的问题。

在这一点上,我没有更积极地在R不对称搪瓷工作,但是,如果你有兴趣并且你想贡献想法或代码,请在这里留言!

+1

似乎这还不可用。谁有兴趣完成这项工作?我建议使用github进行交互,并为最好的主人使用r-forge。在r-forge上,我已经注册了gnupg软件包,一个GnuPG的R包装器。只要我一个人呆着,我会留下r-forge。 – mariotomo 2011-04-28 10:12:03

回答

4

这是否帮助你提前: digest package?它拥有几个哈希函数。据我所知,非对称加密与散列相同...

+1

我不知道'digest'包,我会看看它的实现,也许它有帮助。哈希可以是签名的一部分,但它绝对不是非对称加密。不使用公钥/私钥,不可能去除哈希值,而是将其命名。 – mariotomo 2011-04-28 08:38:09

7

您还可以在作者Simon Urbanek的PKI package中找到合适的函数。

该软件包提供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 
+0

没有完整的解决方案。没有AES加密,并且不推荐原始RSA。 – 2014-09-17 19:59:18

2

这是一个古老的线程但万一他人来对此,Hadley似乎有一个secure包。自述文件指出:

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

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