我有一个类似如下的结构:
struct mydata
{
int a,
int b,
}我想把它填到Windows中,然后把它发送给某个人,让它在Linux中阅读。我正在编写这两个应用程序。
目标是中间的用户不应该能够更改数据,但他可以读取数据。
用户可以访问Linux代码的源代码,但不能访问windows应用程序。
我的问题是:
1-我如何做到这一点?我的第一个想法是从结构中创建一个哈希,用私钥/公钥加密,然后发送给用户(在windows中)。在Linux上,解密它并检查是否有代码匹配数据。这是最好的解决方案吗?
2-我可以使用什么类型的库?该库应在windows和Linux上可用。
3-有没有什么示例代码可以给我一个起点?
编辑1
问题更多的是如何确保数据在windows系统和Linux one之间通过文件复制(文件在sd卡上或通过电子邮件)传输时不被篡改。因此,问题更多的是如何确保数据是防篡改的,而不是如何传输它。
编辑2
我需要将数据作为写入文件的结构发送到Linux系统(一个二进制文件,当Linux上的应用程序读取该文件时,将其映射为结构,然后由应用程序使用)。因此,实际上我将它作为windows上的一个结构,然后我需要对它进行签名,并将其写入文件并发送到Linux计算机。在Linux计算机上,应用程序需要读取它,检查它是否被篡改,然后使用数据。
我的问题是如何对数据进行签名。
发布于 2013-11-07 18:17:55
1.)通过网络和套接字
2.)POSIX套接字API,类似于windows和linux,从一开始就忘记加密
3.) http://beej.us/guide/bgnet/
发布于 2013-11-10 19:45:34
首先,您需要找到一种方法将结构化内容编码/解码为一个字节数组,该数组可能与平台无关(根据字节顺序,32/64位,字符串编码...)。你应该仔细看看ASN.1。ASN.1旨在提供一种明确的、软件和硬件无关的数据编码。有多个库提供ASN.1编码器和解码器,例如OpenSSL或Boost (即使并不总是有良好的文档记录)
为了防止篡改,在RFC 5652中指定了一种用于消息交换的加密标准,称为CMS (加密消息语法,又名PKCS#7)。该标准定义了多种提供防篡改功能的消息类型:签名数据和认证数据。OpenSSL仅支持签名数据消息-签名数据需要公钥加密。经过身份验证的数据更易于使用,因为它只需要共享一个公共密钥。即使我不知道支持认证数据的库。
https://stackoverflow.com/questions/19833187
复制相似问题