2011-04-27 28 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 /中的每個文件。主密鑰不會在任何地方未加密存儲;相反,使用他們自己的公鑰爲每個用戶存儲加密副本。每個用戶都可以使用他們的私鑰解密加密的主密鑰,然後用它來解密每個文件。