【发布时间】:2019-07-18 05:22:18
【问题描述】:
我需要使用 NIST P-256 椭圆曲线来加密和解密数据。现在我已经生成了密钥对,但是如何使用它们来加密和解密呢?
官网只说如何使用这个ec密钥对来签名/验证,但我想知道如何使用这个ec密钥对来加密/解密。
生成 NIST P-256 密钥对代码:
val kpg: KeyPairGenerator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore")
val parameterSpec =
KeyGenParameterSpec.Builder("container", KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
.setAlgorithmParameterSpec(ECGenParameterSpec("secp256r1"))
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA384, KeyProperties.DIGEST_SHA512)
.build()
kpg.initialize(parameterSpec)
val keyPair = kpg.generateKeyPair()
val ecPublicKey = keyPair.public as ECPublicKey
val ecPrivateKey = keyPair.private as ECPrivateKey
【问题讨论】:
-
遵循建议。使用 ECC 密钥交换,请参阅 ECHKE,然后使用 AES 等分组密码进行加密。
-
@kelalaka,请问您有推荐的文档链接或代码示例吗?对不起,我是android新手,所以我必须要求更多信息。
-
这与安卓无关。这是密码学中的一般做法。查看实现here
-
如果您满意,您能接受并关闭这个问题吗?
标签: android encryption kotlin elliptic-curve