【问题标题】:Simplest way to "encrypt" string with another string key?用另一个字符串密钥“加密”字符串的最简单方法?
【发布时间】:2017-10-08 05:57:44
【问题描述】:

我想通过提供我自己的密钥来加密输入并获得加密输出。

这里的关键点(这使我与发布 SO 帖子和我迄今为止在谷歌上搜索过的东西区分开来)

  1. 我需要在 ruby​​ 和 javascript 之间进行加密/解密,所以理想情况下属于两者的库
  2. 简单优于安全。这是主要区别...我试过查看 openSSL 教程,它们非常先进。我实际上只需要加密一个字符串,这与安全或敏感信息没有任何关系,显然在这种情况下你会使用适当的加密。为此,我只需要隐藏一些不太重要的内容。

【问题讨论】:

  • 凯撒密码是否足以满足您的需求? :)
  • 那你在问什么?您将需要选择一种加密算法,然后用您选择的语言编写(或找到书面版本)。
  • 您不需要一个同时适用于 ruby​​ 和 javascript 的库。您只需要选择一种加密标准,例如 RSA 或 Triple Des。然后你就可以得到一个适合两者的库。
  • @Tallboy:完全。如果加密强度不是问题(你说不是)

标签: javascript ruby encryption encryption-symmetric


【解决方案1】:

这是一个基本的XOR cipher Ruby:

key = 'private_key'

def xor_cypher(text, key)
  text.each_byte.zip(key.each_byte.cycle).map { |a, b| (a ^ b).chr }.join
end

p xor_cypher('This is my secret message', key)
# "$\x1A\x00\x05A\x1D\x16\x7F\x06\x1CY\x03\x17\n\x04\x04\x00E2\x0E\x16\n\x11\x15\f"
p xor_cypher("$\x1A\x00\x05A\x1D\x16\x7F\x06\x1CY\x03\x17\n\x04\x04\x00E2\x0E\x16\n\x11\x15\f", key)
# "This is my secret message"

用JS写同样的东西应该不会太难。

最好使用长的随机二进制密钥(不仅仅是通常的字母字符)和二进制数据。

如果没有,您可以先压缩数据,然后再加密。

【讨论】:

  • 我得到了这么多,但我不知道如何将其转换为十六进制或普通字符。
【解决方案2】:

只需使用经典的 HMAC。 RubyJavaScript

(根据已接受的评论编辑。)

【讨论】:

  • 你会这么好心并展示如何“解密”通过 HMAC 的东西吗?
  • 如果这不是安全问题,Tallboy 可以只比较加密的结果。如果这没有意义,密码可能是作者正在寻找的。​​span>
  • 我需要将值解密出来,提供原始字符串密钥
  • 在这种情况下,我推荐一些简单的密码,实现起来非常简单有趣。
  • 这是散列,不是加密方法。
猜你喜欢
  • 2017-02-28
  • 2011-10-10
  • 2012-11-20
  • 2011-12-07
  • 2010-12-27
  • 2014-10-15
  • 2012-06-14
  • 2010-11-22
  • 2023-04-04
相关资源
最近更新 更多