C 加密API与手动实现的算法

C 加密API与手动实现的算法,c,linux,windows,optimization,cryptoapi,C,Linux,Windows,Optimization,Cryptoapi,我试图在互联网上搜索,但找不到什么。 所以问题是:用什么更好?操作系统提供的加密API或手动实现/库提供的算法 我知道,当CPU在操作系统调用后进入内核模式时,会消耗大量的CPU周期,但另一方面,我知道操作系统可以使用硬件相关的加密技术。那么,现实世界中的情况是什么呢?值得使用OS加密API吗 例如,我工作的项目使用CRC32和MD5算法 编辑:我的主要目标是选择最快的方法,其次是了解所有的利弊。MD5可能在任何地方都可用。CRC32非常简单(并不是真正的加密),您可以直接在应用程序中包含或实现

我试图在互联网上搜索,但找不到什么。 所以问题是:用什么更好?操作系统提供的加密API或手动实现/库提供的算法

我知道,当CPU在操作系统调用后进入内核模式时,会消耗大量的CPU周期,但另一方面,我知道操作系统可以使用硬件相关的加密技术。那么,现实世界中的情况是什么呢?值得使用OS加密API吗

例如,我工作的项目使用CRC32和MD5算法


编辑:我的主要目标是选择最快的方法,其次是了解所有的利弊。

MD5可能在任何地方都可用。CRC32非常简单(并不是真正的加密),您可以直接在应用程序中包含或实现它

Windows crypto API支持,默认提供程序可能完全在用户模式下实现,大多数情况下不切换到内核模式。PRng和AES加密可以在硬件中实现


你的目标是什么?速度没有后门?模糊算法?

TLS有硬件加速器,但主要用于公钥加密。除非您有专门的比特币挖掘硬件,否则哈希将在用户端和软件中完成。使用最方便的方法。

CRC不是密码。哈希是密码学的一个侧面。@olaf,Linux和Windows都在其加密api中提供md5和crc函数。这取决于什么是“最好的”。外部提供的库/操作系统可以有后门。自己的实现可能(将)有bug。@内联:那么CRC必须是加密的!所有的CS书籍一定是错的!注意,CRC不适合作为针对国际修改的完整性检查。它可以很容易地重新计算。@Olaf,我在这个问题中只使用带“API”的单词加密。我不是说散列函数是密码学的一部分。我的意思是Windows和Linux在加密api中实现了crc和md5函数。这是误会。如果我的问题令人困惑,请帮助我更正。我编辑了问题以为您添加答案。感谢您的帮助。硬件加密支持在硬件加密引擎的CPU指令集中非常常见。例如英特尔CPU指令和具有硬件加密引擎的iPhone。