我一直在使用 jCryption 进行安全登录。在客户端上我使用 JavaScript 包,在 Java 解密上我使用 BouncyCastle jar 解密。
问题是它在 Tomcat 中运行良好,但是当我使用相同的 webapp 并在 Jboss 上部署时,我在加载 BouncyCastle jar 时遇到问题。
我的问题是:有没有一种方法可以使用 jCryption 进行加密,从而产生更标准化的 RSA 输出,从而允许我使用其他安全提供程序?
我一直在使用 jCryption 进行安全登录。在客户端上我使用 JavaScript 包,在 Java 解密上我使用 BouncyCastle jar 解密。
问题是它在 Tomcat 中运行良好,但是当我使用相同的 webapp 并在 Jboss 上部署时,我在加载 BouncyCastle jar 时遇到问题。
我的问题是:有没有一种方法可以使用 jCryption 进行加密,从而产生更标准化的 RSA 输出,从而允许我使用其他安全提供程序?
这是与 jCryption 兼容的 RSA 解码的片段。我们假设这encExternalKey
就是 jCryptionkey
在握手调用时发送的参数。modulus
并secretExponent
取自100_1024_keys.inc.php
jCryption 附带的文件。
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();
一般来说,如果您想要安全,请避免使用 JavaScript 加密,而是使用 SSL/TLS。
主要问题是:
不幸的是,您实际上并没有通过在您的网站上使用 JavaScript 加密来增加太多安全性。
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