- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经实现了RSA加密算法来加密数据加密中使用的对称 key ,但是RSA的 key 大小和密文大小造成了内存问题,所以我搜索了其他公钥加密方法来解决。我找到了椭圆曲线集成加密方案 (ECIES) 并了解其背后的理论,但是,我不太清楚这种方法如何用作公共(public)/非对称加密算法。该方法使用从加密和解密(使用相同 key )的共享 secret 派生的 key 计算对称加密。
那怎么能算是非对称加密算法呢?或者有什么方法可以实现为非对称加密?
最佳答案
Meta:这实际上不是编程或开发问题。它可能属于 crypto.SX;您可能会要求迁移。
确切地说,ECIES 是一种混合 公钥加密方案,但大多数其他方案也是如此。例如,正如您所说,RSA 通常用于加密工作(每条消息)对称 key ,而不是直接加密数据。
Paraphrasing the wikipedia description:
2-5。 Alice 生成一个临时 key 对,导出共享 DEK,加密数据,并使用她的临时公钥发送(编辑)并销毁临时私钥
已添加,并在下面进行了扩展,根据评论:是的,两端的 DEK 相同(注意我使用“the”表示一个而不是多个),这就是该方案有效的原因;并且使用 DEK 进行数据加密和解密的 ECIES 的部分是对称的,但所有其他操作(安全地创建临时共享 DEK)不是。
除了爱丽丝(或鲍勃)之外,没有人知道她的临时私钥是至关重要的;如果他们这样做,他们可以解密。但她不需要明确保密,因为她在使用它发送消息后立即销毁它;这就是短暂的意思。
让我们看看:
收件人的公钥是公开的,任何人都可以加密
收件人拥有(静态)私钥并可以解密
没有其他人拥有 Bob 的(静态)私钥或 Alice 的临时私钥,并且没有其他人可以解密
收件人只需要一对 key ;如果有多个发送者,他们都可以使用相同的公钥,但不能解密彼此的流量,也不需要 secret 获取公钥;对于一千或一百万发件人来说,这与一个发件人的成本相同或略高于一个发件人
改为考虑标准/传统对称方案的属性:
双方必须事先共享一个 key (只有一个,不是一对);双方都必须保密,不能与任何人分享
这通常需要双方提前会面,或使用物理上安全的方式(例如 express )将 key 从一方传递给另一方,或者可能从中央机构传递给双方
每个 key 只能由一对方使用;对于多个发件人,Bob 必须拥有并管理那么多不同的 key ,并且每个发件人(Alice、Abby、Anne 等)必须拥有不同的 key 。每个发件人必须分别与 Bob 会面,或者他们必须各自有一个(或两个)单独的 express 员, 在他们与 Bob 通信之前。对于一千或一百万发件人来说,这变得非常昂贵
ECIES 没有传统或对称系统的这些属性,所有上述公钥或非对称系统的属性,尽管它也使用 一些对称操作及其非对称操作。
这就是为什么它对我来说听起来像是(混合)公钥加密!
关于encryption - ECIES是公共(public)加密算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50940672/
我是 ECIES 新手,并且使用 ECIES 算法进行加密和解密。下面是我用于加密和解密机制的代码片段。 public static void main(String[] args) thro
我正在尝试用 C++ 编写软件,它将在特定时间将卫星的 ECI 坐标转换为地球二维 map 上的一个点。我知道可以从 TLE 数据轻松访问 ECI 坐标。但它没有说明卫星位于地球上的哪个特定纬度和经度
我想使用 ECIES 加密/解密数据,为此我正在使用 cryptopp。 AutoSeededRandomPool prng; //get private key generated ECIES::D
我正在尝试将带有 DEREncodePrivateKey 的 ECIES num0 PrivateKey 存储到 std::string 并将其重新加载到 num1 PrivateKey 对象中以进行
我正在使用充气城堡 ECIES 和 CBC 模式提供程序中的 AES 来加密数据: Cipher iesCipher = Cipher.getInstance("ECIESWITHAES-CBC");
我在安全飞地 () 中创建了一个非对称 EC key 对。 key 对的公钥将发送到我的后端服务,然后使用它来加密数据 (kSecKeyAlgorithmECIESEncryptionCofactor
我想更具体地说明我想做什么。我在 ECI 中获得坐标,我需要从中获得纬度和经度。我能怎么做?我正在搜索,但我找不到任何关于它的信息。再次感谢。 (我正在用java做一个小程序,显示给定时间内卫星的位置
我正在使用 Cesium Earth 开发卫星跟踪应用程序。 现在,卫星坐标在地球固定系统中并且工作正常。 但是,我还需要在 ECI 坐标系中显示它们,为此我必须让地球旋转。 怎么做? 最佳答案 我首
我有一个 202 字节 key ,用于解密二进制文件。 StringSource keyStr( key, Z3_KEY_LENGTH, true ); AutoSeededRandomPool rn
我在卫星轨道的地心惯性坐标 (ECI) 中有位置 (x,y,z) 和速度 (Vx,Vy,Vz) 向量,并最终希望以大地坐标(纬度、经度、和海拔高度)。 根据这个other Stack Overflow
我是 ECC 加密编程的初学者。有没有人向我解释使用 ECDH 进行共享 key 交换和使用 ECIES 通过使用接收者的公钥加密共享 key 的区别?我觉得只要私钥保密,ECIES 也可以为我提供安
我是 ECC 加密编程的初学者。有没有人向我解释使用 ECDH 进行共享 key 交换和使用 ECIES 通过使用接收者的公钥加密共享 key 的区别?我觉得只要私钥保密,ECIES 也可以为我提供安
我正在尝试在 java 中使用 BouncyCaSTLe 使用 ECC 算法加密一些内容。但是我得到了 BouncyCaSTLe 库的异常,它说不能将 JCEECPublicKey 转换为 IESKe
我需要在 Crypto++ 中实现相当于 BouncyCaSTLe 的 "ECIESwithAES-CBC/NONE/PKCS7Padding"。 主要原因是我需要在 iOS 上加密数据并在后端使用
我尝试使用 ECIES 密码来实例化 SealedObject,但失败并出现 NullPointerException。我正在使用 Java JDK1.8.0_72 和在 Windows 10 上运行
我是一名优秀的程序员,十分优秀!