密码算法是描述密码处理过程的运算规则。例如,加密算法指把信息变成密文的计算方法。密码算法主要有对称密码与非对称密码两大类算法。
对称密码算法指加、解密的密钥一样,或知道其一密钥很易推导出另一个密钥。根据原理不同,对称密码算法又分成分组密码与流密码。通常情况下,对称密码加密算法的加解密速度非常快,适用大批量数据加密的场合。例如,SM4是一种典型的分组对称密码算法,分组长度是128bit,密钥长度是128bit。其他常见的对称密码算法有DES、AES等。
公钥密码算法(也叫非对称密码算法)指用来加、解密的密钥不一样,且由加密的密钥是无法推导得到解密密钥的。这类算法正因为被叫公钥算法,是由于加密密钥是能广泛公开的,任何人均能得到加密密钥并用于加密信息,但仅有对应解密密钥的人才能将信息解密。在公钥密码算法机制中,用来加密的密钥叫做公钥,而解密的密钥叫私钥。私钥由用户保存,且不能泄露,公钥则能公开发布。例如,SM2是一种椭圆曲线公钥密码算法,其密钥长度是256bit。常见的公钥密码算法包括RSA等。
公钥密码算法体制最大优势是,能妥善解决对称密码算法很难处理的密钥交换问题。然而,公钥密码算法普遍比对称密码算法的加密速率慢得多,因此大量的数据加密传输不适合用。在实际应用中,公钥密码算法一般是与对称密码算法结合在一起用,用密码算法交换/协商密钥,而用对称密码算法用密钥对数据加密。
此外还有一类算法叫密码杂凑算法(凑也被称作散列、哈希等)。该算法的作用是把随意长的输入消息串变化为确定长度的二进制串。该算法主要用于配合公钥密码算法计算数字签名。例如,SM3是一种密码杂凑算法,其输出为256bit。常见的密码杂凑算法有MD5、SHA-1、SHA256等。
国密算法指由国家密码主管机构批准发布的一系列自主密码算法。常见的国密算法有SM2、SM3、SM4等。