我的要求:需要在服务器和客户端(J2EE)之间交换一些密钥。
Key只是一段文本,可以是一个数字,字符串的大小可能不超过30个字符。
由于密钥是敏感的,我正在考虑对其进行加密,并在收到密钥时对其进行解密。
Q1)传统代码使用'PBEWithMD5AndDES'。我想知道它是否合适。
在表现方面,可能更好吗?
更新:
客户端没有逻辑。服务器将加密的字符串发送到客户端,客户端将其返回。就像jsessionid一样。
密钥不像信用卡号那么敏感。但它需要以不可读的格式进行交换,优于普通编码技术
更新2:
答案 0 :(得分:1)
我可能只是让服务器和客户端生成私钥和公钥,然后加密密钥以与接收方的公钥交换。
或者只使用强大的东西和对称密钥,如AES256。
我会避免在新系统中使用DES,它已经很老了,并且已被证明是易碎的。
就实际实施而言,我不完全确定问题中有足够的细节。
答案 1 :(得分:0)
AES256将是一个不错的选择..坚实并期待未来的证明。但这将是表现沉重。另一种选择是RC4。
答案 2 :(得分:0)
如果客户端没有使用它作为一种会话令牌,那你为什么要加密呢?
除秘密外,您还可以使用会话中保留的哈希值或随机值。
答案 3 :(得分:0)
我建议 AES-256 。它目前尚不稳定,成为强对称加密的标准。
它也得到了Java的无缝支持(参见 java.security 和 javax.crypto )。此外,AES支持许多免费软件工具,您可以在Unix上使用OpenSSL AES256在性能方面很重要,但是当您加密30个字符串/文档时,这不会成为问题。 (显然,除非有数百万,否则。)
您还需要决定其他一些加密规范,例如块模式和填充。 在这里我的建议 - 这就是我在被要求用Java进行可靠加密时所使用的: