gpt4 book ai didi

Java - 从配置文件加密/解密用户名和密码

转载 作者:太空狗 更新时间:2023-10-29 23:00:15 25 4
gpt4 key购买 nike

我们正忙于为客户开发 Java 网络服务。有两种可能的选择:

  • 将加密的用户名/密码存储在网络服务客户端上。从配置中读取。客户端文件,解密发送。

  • 将加密的用户名/密码存储在网络服务器上。从配置中读取。 Web服务器上的文件,解密并在Web服务中使用。

网络服务使用用户名/密码访问第三方应用程序。

客户端已经有提供此功能的类,但此方法涉及以明文形式发送用户名/密码(尽管是在 Intranet 中)。他们更愿意存储信息。在网络服务中,但真的不想为他们已经拥有的东西付费。 (安全不是一个大的考虑因素,因为它只在他们的内部网中)。

所以我们需要用 Java 快速和简单的东西。

有什么建议吗?

服务器是 Tomkat 5.5。 Web 服务是 Axis2。

  • 我们应该使用什么加密/解密包?
  • key 存储怎么样?
  • 我们应该使用什么配置机制?
  • 这是否易于部署?

最佳答案

据我所知,无论如何,为了调用第 3 方 Web 服务,您以纯文本形式传递密码,并且不涉及安全证书。

然后我会说最简单的方法是在加密/解密 key 只是硬编码在代码中时以加密格式存储密码(通过 java 加密机制)。

我肯定会将它存储在服务器端(文件系统或数据库),而不是在多个客户端上分发和维护它。

这是如何使用“DES”加密的:

// only the first 8 Bytes of the constructor argument are used 
// as material for generating the keySpec
DESKeySpec keySpec = new DESKeySpec("YourSecr".getBytes("UTF8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey key = keyFactory.generateSecret(keySpec);
sun.misc.BASE64Encoder base64encoder = new BASE64Encoder();
sun.misc.BASE64Decoder base64decoder = new BASE64Decoder();
.........

// ENCODE plainTextPassword String
byte[] cleartext = plainTextPassword.getBytes("UTF8");

Cipher cipher = Cipher.getInstance("DES"); // cipher is not thread safe
cipher.init(Cipher.ENCRYPT_MODE, key);
String encrypedPwd = base64encoder.encode(cipher.doFinal(cleartext));
// now you can store it
......

// DECODE encryptedPwd String
byte[] encrypedPwdBytes = base64decoder.decodeBuffer(encryptedPwd);

Cipher cipher = Cipher.getInstance("DES");// cipher is not thread safe
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainTextPwdBytes = (cipher.doFinal(encrypedPwdBytes));

关于Java - 从配置文件加密/解密用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com