【发布时间】:2011-01-12 11:43:53
【问题描述】:
我想就我的问题寻求任何建议。我需要加密一个十六进制字符串。我不能使用 java 的内置函数,因为它在我的服务器中不起作用。简而言之,我必须对算法或任何加密消息的方法进行硬编码。谁能帮我解决这个问题?非常感谢!
这里是代码。
public Encrypt(SecretKey key, String algorithm) {
try {
ecipher = Cipher.getInstance(algorithm);
dcipher = Cipher.getInstance(algorithm);
ecipher.init(Cipher.ENCRYPT_MODE, key);
dcipher.init(Cipher.DECRYPT_MODE, key);
} catch (NoSuchPaddingException e) {
System.out.println("EXCEPTION: NoSuchPaddingException");
} catch (NoSuchAlgorithmException e) {
System.out.println("EXCEPTION: NoSuchAlgorithmException");
} catch (InvalidKeyException e) {
System.out.println("EXCEPTION: InvalidKeyException");
}
}
public void useSecretKey(String secretString) {
try {
SecretKey desKey = KeyGenerator.getInstance("DES").generateKey();
SecretKey blowfishKey = KeyGenerator.getInstance("Blowfish").generateKey();
SecretKey desedeKey = KeyGenerator.getInstance("DESede").generateKey();
Encrypt desEncrypter = new Encrypt(desKey, desKey.getAlgorithm());
Encrypt blowfishEncrypter = new Encrypt(blowfishKey, blowfishKey.getAlgorithm());
Encrypt desedeEncrypter = new Encrypt(desedeKey, desedeKey.getAlgorithm());
desEncrypted = desEncrypter.encrypt(secretString);
blowfishEncrypted = blowfishEncrypter.encrypt(secretString);
desedeEncrypted = desedeEncrypter.encrypt(secretString);
} catch (NoSuchAlgorithmException e) {}
}
这些是我使用的方法。如果它作为应用程序运行没问题,但是当我把它放到我的服务器(即 glassfish 服务器)上时发生异常,它说没有这样的算法。
【问题讨论】:
-
您永远不应该编写自己的加密算法。 ...您的意思是,内置功能在您的服务器上不起作用?
-
“因为它在我的服务器上不起作用”! - 听起来不像是放弃工业级算法的理由,这些算法是由科学家团队将他们生命中的大部分时间奉献给加密领域的多年研究而创建的。
-
清晰和细节是获得满意答案的关键
-
“它不起作用”不是很有帮助 - 请详细说明在您的服务器上尝试使用它时会发生什么。
-
@twinwins - 毫无疑问,您正在以艰难的方式解决您的问题。简单的方法是找出阻止在 Glassfish 上运行的加密的配置问题。修复起来可能非常简单……如果您提供更多详细信息,我们可能会有所帮助。
标签: java encryption hex