“数据加密”的版本间差异

来自典枢
跳到导航 跳到搜索
 
第1行: 第1行:
在典枢中,使用ECIES(Elliptic Curve Integrate Encrypt Scheme)方法对数据进行加密。ECIES加密可以认为是先基于ECDH(Elliptic Curve Diffie–Hellman key exchange)协商密钥,再用刚刚协商一致的密钥进行对称加密,这样能够结合非对称加密和对称加密的优点。
在典枢中,使用ECIES(Elliptic Curve Integrate Encrypt Scheme)方法对数据进行加密。ECIES加密可以认为是先基于ECDH(Elliptic Curve Diffie–Hellman key exchange)协商密钥,再用协商一致的密钥进行对称加密,这样能够结合非对称加密和对称加密的优点。


== 加密参数 ==
== 加密参数 ==

2024年4月22日 (一) 07:00的最新版本

在典枢中,使用ECIES(Elliptic Curve Integrate Encrypt Scheme)方法对数据进行加密。ECIES加密可以认为是先基于ECDH(Elliptic Curve Diffie–Hellman key exchange)协商密钥,再用协商一致的密钥进行对称加密,这样能够结合非对称加密和对称加密的优点。

加密参数

典枢使用的ECIES包括两种标准,第一种标准命名为stdeth,第二种标准名为为gmssl。 每种标准都包括三个参数,即椭圆曲线,散列算法,对称加密算法。需要注意的是,即使这三个参数是一致的,实现上的差异依然会带来差别,例如ECDH中密钥的生成算法,此处不详细描述。

stdeth

这是默认选项。在这种标准下的参数选择如下:

  • 椭圆曲线:specp256k1
  • 散列算法:keccak256
  • 对称加密算法:Rijndael128GCM

gmssl

这是支持国密版本的选择。

  • 椭圆曲线:SM2
  • 散列算法:SM3
  • 对称加密算法:SM4

加密格式

无论采用哪种加密标准,加密后的格式都是确定的。假设原文为m,相应的密文为M,加密后的数据格式为 M || public_key || mac,其中public_key为公钥,mac为校验码。 在上述两种标准中,public_key的长度为64字节(一个可能的优化方式是采用压缩的公钥,其长度为33字节),mac的长度为16字节。

代码实现

相关的代码实现有两个,一个是基于JavaScript实现的meta-encryptor,另一个是基于C++实现的YeeZ-Privacy-Computing