我的任务是在桌面应用程序和移动设备之间传输小的二进制消息(1或2 kb长)。消息应该是非对称加密的(例如RSA)。据我所知,应该使用混合密码系统来完成这项任务:
我不想发明一种自己的格式来存储密文和加密的对称密钥。所以我偶然发现了CMS标准(加密消息语法)。乍一看它看起来就像我需要的一样。如果我正确理解了标准,它会嵌入密文和加密的对称密钥以及有关使用的算法的信息。
有人可以说是否应该使用CMS标准来完成概述的任务? OpenSSL的CMS支持是否足以满足我的需求?
干杯,基督徒
答案 0 :(得分:5)
CMS绝对支持您正在寻找的操作顺序。不利的一面是,CMS格式本身和OpenSSL API都相当复杂。
一个小的皱纹是CMS主要使用X.509证书而不是公钥。您可以在系统中通过实际推出PKI或仅使用自签名证书(基本上相当于传递裸RSA密钥,但具有绑定密钥和元数据的通用格式)来处理此问题。无论如何,这有时非常有用。)
OpenSSL旁边没有CMS API的文档;我能找到的最好的参考资料是OpenSSL源代码发行版的apps /目录中的cms.c;代码被构造为一个1000行主要功能,这有点令人不安,但它确实使用公钥执行加密,因此您可以将其用作指南。