如何避免使用BouncyCastle作为jCryption的提供程序

时间:2012-03-29 00:48:45

标签: java security encryption rsa jcryption

我一直在使用jCryption进行安全登录。在客户端我正在使用JavaScript包和Java解密我正在使用BouncyCastle jar来解密。

问题是它在Tomcat中运行正常但是当我使用相同的webapp并在Jboss上部署时,我在加载BouncyCastle jar时遇到问题。

我的问题是:有没有办法使用jCryption进行加密,这将产生更标准化的RSA输出,这将允许我使用其他安全提供程序?

3 个答案:

答案 0 :(得分:0)

jcryption并不像你想象的那么安全:

http://www.securityfocus.com/archive/1/520683

我的建议......做类似的事情:

http://www.frostjedi.com/terra/dev/rsa/index.php

以下网址详细说明:

http://area51.phpbb.com/phpBB/viewtopic.php?f=84&t=33024&start=0

答案 1 :(得分:0)

一般来说,如果您需要安全性avoid JavaScript cryptography,请改用SSL / TLS。

主要问题是:

  • 加密例程(例如随机数)的实施质量不足
  • 客户端不知道脚本是否可能被MITM攻击者篡改,即使JavaScript库质量足够。

不幸的是,您实际上并没有在网站上使用JavaScript加密技术来增加安全性。

答案 2 :(得分:0)

以下是与jCryption兼容的RSA解码片段。我们假设encExternalKey是jCryption在握手调用中在key参数中发送的内容。 modulussecretExponent取自jCryption附带的100_1024_keys.inc.php文件。

RSAPrivateKeySpec privateKeySpec =
   new RSAPrivateKeySpec(new BigInteger(modulus, 10), new BigInteger(secretExponent, 10));
RSAPrivateKey privateKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(privateKeySpec);

Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
StringBuilder externalKeyBuf =
    new StringBuilder(new String(cipher.doFinal(new BigInteger(encExternalKey, 16).toByteArray())));
String externalKey = externalKeyBuf.reverse().toString().trim();