【问题标题】:how do I encrypt data in R?如何在 R 中加密数据?
【发布时间】:2011-08-13 23:02:59
【问题描述】:

我正在将sentry handler 添加到R logging package。目前django-sentry 根据在​​安全通道中以明文形式传输的共享密钥验证客户端(发送日志记录的应用程序)。

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

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


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

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

【问题讨论】:

  • 似乎这还不可用。谁有兴趣完成这项工作?我建议使用 github 进行交互,使用 r-forge 获得最佳大师。在 r-forge 上,我已经注册了 gnupg 包,它是 GnuPG 的 R 包装器。只要我一个人,我就会留在r-forge。

标签: r logging encryption-asymmetric sentry


【解决方案1】:

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

【讨论】:

  • 我不知道digest 包,我会看看它的实现,也许它会有所帮助。散列可以是签名的一部分,但它绝对不同于非对称加密。不使用公钥/私钥,不可能去散列,你说的。
【解决方案2】:

您还可以在作者 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

【讨论】:

  • 不是一个完整的解决方案。没有 AES 加密,不推荐使用原始 RSA。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2023-03-28
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多