Java 如何使用ECDH加密明文?

Java 如何使用ECDH加密明文?,java,android,bouncycastle,elliptic-curve,ecdh,Java,Android,Bouncycastle,Elliptic Curve,Ecdh,我正在寻找示例Java代码来实现ECDH加密的密码。我已经找到了获取所需密钥的方法,但仍然没有找到加密文本的解决方案。如果有人能提供一些指导,我将不胜感激 顺便说一句,我正在使用SpongyCastle,因为我正在为Android编程 非常感谢 ECDH不是一种加密算法;它无法加密您选择的某些数据。这是一个协议,导致了“共享秘密”:发送方和接收方最终共享的数据是“秘密”(只有他们知道),但他们无法控制其内容 其思想是,您可以使用共享秘密作为对称加密算法的基础。由于共享秘密的格式相对不灵活(使用E

我正在寻找示例Java代码来实现ECDH加密的密码。我已经找到了获取所需密钥的方法,但仍然没有找到加密文本的解决方案。如果有人能提供一些指导,我将不胜感激

顺便说一句,我正在使用SpongyCastle,因为我正在为Android编程


非常感谢

ECDH不是一种加密算法;它无法加密您选择的某些数据。这是一个协议,导致了“共享秘密”:发送方和接收方最终共享的数据是“秘密”(只有他们知道),但他们无法控制其内容


其思想是,您可以使用共享秘密作为对称加密算法的基础。由于共享秘密的格式相对不灵活(使用ECDH,共享秘密是一个椭圆曲线点,大约一半是真正的秘密),通常的方法是使用安全哈希函数(比如SHA-256)对其进行哈希运算,并使用哈希输出(或其一部分)作为实际的加密密钥。

ECDH通常用于密钥协商,不是为了加密什么东西。出于各种原因,您可能会希望使用对称密码(如AES),速度是一个原因。我尝试使用AES,但一直出现以下错误:java.security.InvalidKeyException密钥长度不是128/192/256.8血淋淋的详细信息见。请特别查看第5.8.1节和第6.1.2节。