我计划编写一个跨平台(Android,iOS用于客户端和Java,C#在服务器端)库,它以易于使用的方式包装OpenSSL。我们的想法是提供一个简单的解决方案,将基本安全功能集成到简单的移动应用程序中(我们不是在讨论银行应用程序),它们通过不安全的网络与远程服务器通信。整个软件包应该包括服务器端和客户端加密功能(如果我将它放在一个或两个库中,则不是100%确定。也许将它拆分以保持代码更干净并且库变薄是有用的)。
我知道Java和C ++还有其他库比OpenSSL更容易使用。一些C ++候选人是BeeCrypt,Botan,Crypto ++,Sodium(我认为是C库),NaCL和Keyczar(谷歌我猜,但没有找到关于它的大量文档)。对于Java:Conceal,BouncyCastle(Android内置),SpongyCastle,Cryptix等。
到目前为止,我并不相信使用Java库,因为我想在所有平台上使用一个库(iOS不支持Java,所以我会在这里遇到困难)。对于C ++ Toolkits和Libs,我也不确定,因为安全性自然是一个非常敏感的话题。理想情况下,它应该是一些广泛使用,被接受,维护良好的开源库。在我看来,OpenSSL确实很好地符合这个标准。我也喜欢LibreSSL,但我不认为这个lib目前被广泛使用。
到目前为止,我的计划是:
在C ++中为OpenSSL编写基本包装器,添加一些默认配置,并且易于处理openSSL功能的接口
在我的c ++库中添加一些JNI Wrapper并将其包含在Android应用程序中。
我的一般问题是:
一旦我获得了JNI Wrapper,我怎么能把这个结果包含在我的 服务器端JavaEE应用程序(在Tomcat中)将处理Android应用程序的请求?前提条件是什么?应该配置什么?也许这根本不可能。我是天真的吗?
非常感谢您提前提供任何帮助。
编辑: 只是为了让事情变得更清楚:我的最终库将不仅包括加密功能(还包括身份验证和自动化)。与Apache Shiro类似。