搭建完Java密码实践环境后,需要验证Java环境中加密算法是否可用,以确保后续编码实践的顺利进行。
(1)实现步骤
1)通过Security.getProviders()取得系统中已安装了的所有的security.Provider(返回值是一个数组对象),并依次打印,用来测试前面配置的BC库是否可以正常使用。
2)通过security.Provider对象的entrySet()提取所有的密码算法成员,用for循环把其成员依次打印出来。
3)由于每个security.Provider的entry(条目)特别多,全打印需要上万行,因此在本实践例子中对输出进行了控制,每个security.Provider只打印三个条目。具体实现方法为程序循环每个security.Provider时,取得每个security.Provider时计数器(count)会初始化为1,打印一个成员累加一次,当计数器(count)累计到3时退出循环(读者可以自己修改计数器观察效果)。
(2)实现代码
(3)代码结果输出
在输出的结果中如果可以看到Java BC库版本,密码算法环境验证就完成了。验证完Java密码算法环境后,接下来就需从应用建设与实践的角度考虑如何选用正确的安全算法、密码组件、安全套件,甚至是密码产品。Java BC库可以与JDK完美组合提供国际密码算法服务,也可以提供我国商用密码的实现接口,是一个优秀的开源密码组件。实际上除了BC库外,业界还有很多其他非常好用的密码组件,OpenSSL就是其中之一。OpenSSL使用C语言开发,具备密钥管理、X.509证书管理等功能特性。由OpenSSL衍生的商用密码版本GMSSL组件已广泛地应用于各类重要系统。读者可以根据自己选择的开发语言使用不同的密码组件。