保护或加密C程序的输入/输出?

保护或加密C程序的输入/输出?,c,security,encryption,terminal,C,Security,Encryption,Terminal,我是一名计算机工程系的新生,正在用C语言编写一个程序,以便在暑假里学到更多 除了Diffie Hellman的简单实现之外,我对加密一无所知 我的程序只基于终端,完全离线。它需要从文件中读入保存的数据,并在完成后写回文件。我想加密程序中的I/O 这看起来很简单,但谷歌搜索让我陷入了圈圈,因为我知道的还不够多,无法真正到达任何地方。是否有人可以向我提供有关加密基础知识和使脱机程序安全的资源?如果您想了解使用加密输入和输出文件的一般技术,我建议实现一个非常简单的“加密”算法,例如带常数的XOR。例如

我是一名计算机工程系的新生,正在用C语言编写一个程序,以便在暑假里学到更多

除了Diffie Hellman的简单实现之外,我对加密一无所知

我的程序只基于终端,完全离线。它需要从文件中读入保存的数据,并在完成后写回文件。我想加密程序中的I/O


这看起来很简单,但谷歌搜索让我陷入了圈圈,因为我知道的还不够多,无法真正到达任何地方。是否有人可以向我提供有关加密基础知识和使脱机程序安全的资源?

如果您想了解使用加密输入和输出文件的一般技术,我建议实现一个非常简单的“加密”算法,例如带常数的XOR。例如,以下非常简单的函数可用于加密和解密:

void encrypt(char *data, size_t len)
{
    while (len--) {
        *data++ ^= 0xFF;
    }
}
要读取加密文件,您需要读取一块数据,对其进行解密,然后像平常一样处理它。对于写入,您将执行相反的操作:加密数据,然后写入


使用加密文件时,您将无法使用C stdio函数,例如
fgets()
fprintf()
,因为您没有机会对这些函数和实际文件I/O之间的数据进行加密/解密。

我知道一些非常简单的密码,如Caesar密码和XORing字节,但我想学习使用行业标准。从概念上讲,我理解加密的基本原理,比如对称与非对称。我也理解DH背后的数学原理,但我不理解的是保持应用程序安全背后的整体思想。是否有安全系统的资源而不仅仅是特定的算法?保持应用程序安全的总体思路在很大程度上独立于您选择的特定加密算法。这就是为什么我建议您可以学习使用简单的XOR,因为这样可以消除使用真正加密的额外复杂性。大型复杂程序是否仍然使用仅加密I/O的基本思想?除了I/O之外,还有其他方法可以使程序受损吗?我最终想进入嵌入式编程领域,你们有嵌入式系统安全方面的资源吗?这是一个相当广泛的问题。除了I/O之外,还有很多可能“破坏”一个程序的方法,只要看看任何大型程序的更新说明,包括您现在使用的操作系统和浏览器。加密不一定有助于妥协——一个程序可以对所有I/O进行完全加密,但仍然可以对加载到内存中的数据进行哑操作。嵌入式系统的安全性还有其他复杂性,例如难以更新(考虑将更新应用于海洋下的油井或在轨卫星)。