在我的机构,我们有一个脚本,它已经从数据库加密和解密密码大约10年了(请不要让我们深入了解这样做的最佳做法;这在我自己的社区中是一个健康的辩论但是业务需要它)。它一直在使用BouncyCastle在Java 1.3上运行。
所以,基本上,我有一个非常旧的密钥库,密码很旧,我需要使用这些密码库,但是在使用新Java的升级机器上运行的更新代码库中。
我们决定重写围绕该功能的代码库,这基本上也需要重写这篇文章。但是,基本上,代码的加密部分是相同的。现在我们将它部署到Redhat上的Java 1.7。这是我们遇到问题的地方。
我的开发机器:OSX,Java 1.7(build 8)
我的测试机器:Redhat,Java 1.7(build 9)
新代码在我的本地开发机器上执行得很好。 但是当我尝试将它部署到我们的测试机器时,我得到了“UnrecoverableKeyException:no match”。
因此,在我们的测试机器上,我尝试使用Java 1.6进行部署 - 并且看哪,这很好用。然后我获得了Java 1.7 build 8(思考构建9是问题)并尝试了,但是与构建9相同的错误。
所以看起来像是BouncyCastle:
我的问题是:有没有人知道Java 1.7和BouncyCastle实际上是否存在问题?我尝试浏览BC网站,但除了声明最新的BC jar与Java 1.7兼容外,该网站的其余部分似乎相当破碎(很多是404s)。我尝试使用谷歌搜索,但几乎所有与此异常相关的内容都是引用Android并且似乎无关。
或者是否有一些关于让它在Java 1.7上运行的东西?我当然不会精通BC,PGP或任何与加密相关的东西,而且大部分都是为了说实话。 LOL
更多细节:
我正在使用bcpg-jdk15on-151.jar,BC状态与JDK 1.5-1.7兼容
通过“部署”我的意思是我正在安装到Apache Karaf 3。
另请参阅:http://karaf.922171.n3.nabble.com/Karaf3-BouncyCastle-and-Java7-vs-Java6-td4034721.html