带有javascript和ruby密钥的对称加密

时间:2011-09-02 14:19:53

标签: javascript ruby algorithm security encryption

我想使用带有ASCII字符的密钥对最长10位数的数字进行编码。

编码的字符串应该使用相同的密钥解码,该密钥应该返回解码的数字。

10 => encoding_with("secret_pass") => hash => decoding_with("secret_pass") => 10

这两个操作在Javascript和Ruby中应该以相同的方式工作。

我应该为此目的使用什么样的方法?

所有数据都应该是ASCII格式,没有用于输入,散列和密钥的多字节数据。

3 个答案:

答案 0 :(得分:4)

简单的XOR就足够了。

JavaScript

Ruby

是的,你可以过火并打破完整的加密套件,但由于算法的一部分将在浏览器中运行,在JS(完全不受信任的环境)中,任何对Serious Cryptography™的尝试都会给你一个{{ 3 {}} false sense(换句话说,实际上会使您的系统更少安全)。

如果您尝试保护传输中的数据,请使用为该作业制作的工具;在这种情况下,HTTPS。

答案 1 :(得分:2)

我会查看Symmetric Key Encryption的一些内容,而最突出的AES. AES几乎是标准的,并且以两种语言实现。只需确保使用相同的密钥和salt进行加密和解密。

Javascript AES

Ruby AES

答案 2 :(得分:1)

如果你想让它变得简单,安全性不是一个很大的问题(因为评论中的javascript ...观察),最简单的方法是简单地生成任何随机值,大于(更多位数)数字,简单的XOR与数字。这假设密钥(=随机数)先前与其他程序共享。

1. generate random number with 10 hex digits -> KEY
2. take the number then do (number XOR key ) -> result
3. send result
4. get the result and do (result XOR key) -> number

更好(更强)的东西是使用任何公私钥匙系统。交换密钥,一边是公共密码,另一边是私密解密。