2012-05-31 244 views
2

我有一个客户令牌,我从一个web应用发送app1到另一个web应用说app2。我想在app1加密客户令牌 ,并使用在app1和app2共享的密钥在app2解密。我没有得到如何从这开始?这将是非常有用的,如果有人可以指向我的一些示例代码或一些使用共享密钥的tutotrial,因为太多的加密/解密的东西(如对称密钥,公共密钥)在网络上真的让我困惑。另一个限制是我真的很短的时间这个细节。提前致谢。在java中使用共享密钥进行加密/解密?

编辑: -我正在寻找简单的程序,就像在http://sanjaal.com/java/186/java-encryption/tutorial-java-des-encryption-and-decryption/给出,但使用AES?无法使用共享密钥在AES中找到这种示例?

+0

这里有一个很好的例子:http://stackoverflow.com/questions/992019/java-256-bit-aes-password-based-encryption –

+0

我想看看对称,认证加密。 – CodesInChaos

+0

@EmmanuelBourg我不确定OP将如何使用它,但很可能您的建议容易受到主动攻击(如填充oracle)的攻击。这也是基于密码的加密,OP没有理由使用密码而不是简单的密钥。 – CodesInChaos

回答

0

我建议这样的:

分配了公钥/私钥对你的每个应用程序和存储在一个秘密密钥密码安全地保护私钥。确保这是非常安全的。毋庸置疑,公共证书(包含公钥)也将公开。
每个应用程序将拥有所有其他应用程序的公钥证书。现在,当有一个应用程序想与其他应用程序通信时,

第一个sign(基本上是加密)令牌与发送应用程序的私钥。
然后使用要将数据发送到的应用程序的公钥对结果值进行加密。

通过这种方式,接收此值的应用程序可以确保中间没有人能够确定您发送的内容,并验证令牌是否来自可信实体。
但是,如果您使用共享密钥(对称密钥),那么如果对称密钥遭到破坏,则所有应用都将受到攻击。

-1

通常情况下,您使用非对称算法(例如RSA)来加密对称密钥(例如AES)以安全地与另一方分享,然后使用对称密钥对后续通信进行加密。这是非常基本的要点,但还有很多要考虑的因素。

我可以看到你自己现在进入非常大的麻烦现在有几个原因。

  1. 你不知道密码
  2. 的概念你都不愿意详细研究
  3. 只是想抓住从网上一些代码,并使用它。
  4. 非常短的时间

我知道你可能没有选择,也许你的老板/客户想要得到这个迅速完成。但我完全建议你不要继续前进,除非你知道你在做什么。如果您正在处理诸如信用卡信息或其他重要客户信息等敏感信息,请自己帮忙并深入研究密码。

如果以不正确的方式使用密码算法,密码算法有多强大并不重要。所以你需要了解如何正确使用每种算法,以及它的优点/缺点。

+0

我看不出在这里使用非对称加密的理由。 – CodesInChaos

+0

@CodeInChaos:如果两个Web应用程序都受其控制,则使用存储在共享位置的对称密钥是有意义的。然后他可以每天/每周更换钥匙。但我宁愿为每个通信会话生成一个密码安全的随机会话密钥,并使用非对称密码术将其与其他应用程序安全地共享。或者他可以编写一个应用程序来生成对称密钥并将其存储在每周/每周的共享位置。我可能错了。请友善地指出任何潜在的弱点:) –

+0

您可以生成一个随机对称密钥,并在另一个更长期的对称密钥下共享它。本质上这是Kerberos的核心。 –

相关问题