国际库对国产算法支持不那么友好,国产库可以更好地支持国产密算法的密码函数库。
如果密码编程的所有事情都要从头开始写,那么结果将是灾难性的。幸亏国际开源界已经为我们提供了两个密码学相关的函数库:OpenSSL和JCA/JCE(JCA的全称是Java Cryptography Architecture,Java密码学框架;JCE的全称是Java Cryptography Extension,Java密码学扩展)。从功能上讲,OpenSSL更为强大,OpenSSL不但提供了编程用的API函数,还提供了强大的命令行工具,可以通过命令来进行常用的加解密、签名验签、证书操作等功能。而JCA/JCE是纯粹用Java写的,其实OpenSSL也可以(并且是经常)在Java程序中调用,而且很方便地和其他密码系统交互(多数密码应用系统都是用C/C++写的,或者是基于OpenSSL的)。
在一线密码应用开发中,基于OpenSSL的多些,建议必须掌握。JCE是Java的嫡亲,也必须掌握!业界不少密码应用系统都是用C/C++写的,或者是基于OpenSSL的,所以Java开发者免不了要和这些C系统对接,为了更顺畅地兼容,有时必须学会在Java中调用OpenSSL函数库。比如某个同事是C程序员,基于OpenSSL开发出一套函数接口;又或者第三方厂商提供一套密码算法接口供Java开发者调用,而且没有源代码!所以,我们必须理解并会使用这些基于C的密码函数库。那么Java自带的密码库能否不掌握呢?也不行,如果我们开发的系统是纯Java的,就没有必要用C密码库了,完全可以用Java自带的密码库,这样味道比较纯。
当然,仅仅会使用这两大库也是不够的,最多是一个调用者而已。鉴于信息安全如此重要,我们更要做一个实现者,所以算法理论、协议原理的学习必不可少,用Java实现这些算法原理更是重中之重!