数字证书及加解密

当异构系统遇上 RSA

2017-07-15  本文已影响12人  舌尖上的大胖

先捞干的,代码在 GitHub

背景

网络通信在安全性比较敏感的环境,有可能会用到 RSA 算法,这里有 RSA 的中文说明

但是在异构系统间通信,使用 RSA 加密的时候,由于各系统对于 RSA 的实现有些细节差异,比如:对证书和密钥格式的支持不一致,而且证书格式与扩展名关系又比较乱,所以会导致一些问题。

整体思路

证书格式方面,迁就 JavaScript,在 Objective-C 和 Java 端增加对相应格式的处理。

一、JavaScript

主要职责: 作为 Client 在 Web 页面使用,使用公钥对数据进行加密。

我们使用了 JavaScript 的 RSA 库 JSEncrypt。由于 JS 对二进制数据的支持不太方便,所以 JSEncrypt 对于公钥和私钥的支持,都使用了 PEM 格式。

二、Objective-C

主要职责: 作为 Client 在 iOS 或 macOS 设备上使用,使用公钥对数据进行加密。

其实在 Apple 的 Core Foundation 中,对 RSA 有比较标准的支持,但是不知道什么原因,不支持 PEM 格式密钥的处理。由于 JS 端处理能力有限,所以最后采用的是在 Objective-C 端集成 OpenSSL 的方式来处理。

参考内容:

三、Java

主要职责:

参考内容:

Java 中对于 RSA 也有比较良好的支持,主体代码参考了《RSA Encryption Example》。但是这份代码也是不支持读取 PEM 格式的私钥,所以参考了 Stack Overflow

上一篇下一篇

猜你喜欢

热点阅读