最近在开发一个Http服务器,Http报文里的一段数据需要加密。
加密方式是这样的:厂商云平台或者本地系统采用 AES-128(CBC 模式)加密方式对发送内容中的
data 字段内容进行加密,并进行 Base64 编码。
看了一些关于加密算法的介绍并百度和谷歌一番后,发现AES-128加密需要生成随机的IV(Inilization Vector)。
问题是,我该如何保存这个IV呢?
①协议里并没有规定用其他参数传递IV。
②查了许多算法,发现有的是将IV保存到密文的前16位,有点则采用固定IV。在openssl中,会以"Salted__'开头来保存密文,IV保存在哪,这是一个标准吗?
注:在网上查了很多关于AES128(CBC模式)的算法和在线工具,实现各不相同,甚至连相同参数加密产生的结果都不一样,并且几乎没有一致的。那是否有一个标准呢?这个标准是什么?由于我的实现必须和其他协议的开发者保持一致。因此我不能自己扩展加密解密的算法。
是否一个标准实现了以下两个方法:
string Encrypt(string plainText, string encryptKey)
string Decrypt(string cipher, string encryptKey)