2013-08-26 16 views
0

我在Ruby中創建一個WebSocket的服務器,我想在服務器和客戶端之間的字符串的信息進行加密。我買不起一張證書,所以我想我會用模來創建一個加密算法。紅寶石 - 生成素數的WebSocket的加密

我需要爲此算法生成大質數。我知道Ruby有一個內置的Primes函數,但我不確定它是否可以生成50到60位數字。 Primes的內置功能對此有用嗎?

如果任何人都可以免費提供加密我WS消息的更好的方法(和解密的另一邊)我也接受:)

+2

我強烈建議你不要推出自己的加密。看看這個鏈接瞭解更多信息:http://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own。 – sunnyrjuneja

回答

2

自簽名的證書將工作,除非這是一個公共 - 面向項目。如果您的客戶需要一種方式來信任它所連接的服務器,那麼真正的證書纔有意義。

或者,Crypt寶石有很多的加密功能的Ruby實現的。這裏的加密和解密使用Rijndael算法的字符串的一個例子:

crypter = Crypt::Rijndael.new("super-awesome-32-byte-key-goes-here") 
plaintext = "Hey Bob, how's it going? -- Alice" 
cyphertext = crypter.encrypt_block(plaintext) 
plaintext_again = crypter.decrypt_block(cyphertext) 

如果你可以分享你的客戶機/服務器之間的一個關鍵,你不應該有任何麻煩這樣做。

+0

我的數學老師跟我們談了密碼學,我意識到自從我的WebSocket服務器依賴於字符串,我需要加密它們以防止竊聽。他向我們介紹瞭如何共享客戶端和服務器之間的通用密鑰,所以這不應該是一個問題。但是我發送消息的客戶端是HTML5遊戲。我能否以某種方式將Rails鏈接到它? –

+1

當然,有[JavaScript加密庫](http://crypto.stanford.edu/sjcl/)。然後問題出現在保護鑰匙上。我不知道你做的工作有多嚴重。我相信(我不是專家)Rijndael是對稱的,所以只有一個關鍵(與具有公鑰和私鑰的非對稱算法相比),並且如果您在HTML5/JS源代碼中發佈密鑰,任何人都可以將它並從理論上解密通信。 –

+0

從我所教的內容來看,我可以使用'modulo'與我的客戶共享一個公鑰,而不需要竊聽者發現它是什麼。他給了我們一個算法來做到這一點,但我必須弄清楚如何使用這個密鑰來加密消息,但現在我可以用'crypt'來做到這一點。你提到的JS庫和'crypt'使用相同的算法嗎?我無法在任何地方找到'Rijndael' –