Java(Android):根据JWA(RFC 7518)的Diffie-Hellman密钥交换过程
我需要使用ECDH密钥交换过程来加密/解密客户端和服务器之间的消息。Java(Android):根据JWA(RFC 7518)的Diffie-Hellman密钥交换过程,java,jwe,jose4j,ecdh,jose,Java,Jwe,Jose4j,Ecdh,Jose,我需要使用ECDH密钥交换过程来加密/解密客户端和服务器之间的消息。 我使用库来实现加密功能 我有本地密钥对(privatedC和publicQC),我有远程公钥QT,我有transactionID和referenceNumber 现在,我需要根据所有这些细节生成一个内容加密密钥(CEK),并使用它对从服务器接收到的消息进行解密,以及对发送到服务器的消息进行加密 我不知道该怎么做 规范: 根据JWA(RFC 7518)在直接密钥协商模式下的Diffie-Hellman密钥交换过程,使用曲线p-2
我使用库来实现加密功能 我有本地密钥对(private
dC
和publicQC
),我有远程公钥QT
,我有transactionID
和referenceNumber
现在,我需要根据所有这些细节生成一个内容加密密钥(CEK),并使用它对从服务器接收到的消息进行解密,以及对发送到服务器的消息进行加密
我不知道该怎么做
规范:
根据JWA(RFC 7518)在直接密钥协商模式下的Diffie-Hellman密钥交换过程,使用曲线p-256、dC
和QT
生成一对
CEK(每个方向一个),标识为事务ID
。为了从包含的Concat KDF函数中获得256位的键控材料,假设ECDH-ES+A256KW的“enc”参数,并假设KDF的算法ID为空(注意,这仅用于密钥推导)。本规范版本中支持的参数值为:
- “alg”:ECDH-ES
- “apv”:
referenceNumber
- “epk”:
Q怓
- {“kty”:“EC”“crv”:“P-256”}
- 所有其他参数:不存在
- CEK:“kty”:oct-256位提取为:
- CEK(a->s):256位
- CEK(s->a):256位