Serpent加密算法,主要用于在线Serpent加密和Serpent解密,该算法使用32轮替换置换网络。
Serpent是一种对称密钥加密区块算法,曾入围高级加密标准 (AES) 竞赛,在该竞赛中排名第二,仅次于Rijndael,Serpent加密算法由Ross Anderson、Eli Biham和Lars Knudsen设计。
Serpent对安全采取了保守的方法,选择了较大的安全余量:设计者认为16轮足以抵御已知类型的攻击,但指定32轮作为未来的安全保险。在高级加密标准 (AES) 竞赛最终投票中,Serpent安全性最好,其在决赛入围者中获得的反对票最少,但总体排名第二,因为Rijndael获得了更多的赞成票,决定因素是Rijndael允许更高效的软件实施。
块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的,因此不同的工作模式对应的填充模式不同,当您选择NONE不填充时,则要保证加密文本长度为16的倍数,否则出现Serpent解密/加密异常。
初始化向量IV可以有效提升安全性,但是在实际的使用场景中,它不能像密钥KEY那样直接保存在配置文件或固定写死在代码中,一般正确的处理方式为:在加密端将IV设置为一个16位的随机值,然后和加密文本一起返给解密端即可。
加解密参数需要完全一致才能成功,为防止乱码和保证正确的传输结果,加解密文本一律使用Base64编码的字符串。