首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android 9.0派中获得ECDH密钥对?

如何在Android 9.0派中获得ECDH密钥对?
EN

Stack Overflow用户
提问于 2019-07-04 17:18:17
回答 3查看 1.2K关注 0票数 0

我想要ECDH密钥对(公钥和私钥)。此方法在Android 9.0派中不起作用,因为此版本中删除了安全提供商"BC“、"SC”。我尝试了下面的方法

代码语言:javascript
复制
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC", "BC");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(256, random);
KeyFactory kaif = KeyFactory.getInstance("EC", "BC");
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();

以下是我在使用带有bove代码的"BC“提供程序时获得的密钥,EC Private key S: 30e3def89f6aca7ab4e1e0e0367bf936955339db03a0c32c63a08293066f9423 EC Public Key X: 1675a6b1c8097f651be6f6a555ab9e5da83f03d3082041ae29111609b98594be Y: ed23f9263c6a1e8892d03a0c33ed9d8bfc5886dfe67fb7947457e3ff43baffca

方法2: Security.insertProviderAt(BouncyCastleProvider(),1);

当我在gradle中添加弹跳城堡并尝试像上面那样启动时,输出如下: privateKey = {OpenSSLECPrivateKey@7518} "OpenSSLECPrivateKey{params={ECDSA-Parameters:(256位)\n}}“publicKey = {OpenSSLECPublicKey@7519}”公钥:(256位)\n00000000 04 5c 2c 76 23 09 41 c4 16 e2 99 ea e0 fa ed 16 |.\,v#.A.|\n00000010 52 ca 91 d2 0c fe 7f c4 94 76 54 9a 3c 49 ab a5 |R.vT

我需要这是如此简单,在可读的格式,我需要做任何转换,以获得字母数字的关键字

EN

回答 3

Stack Overflow用户

发布于 2019-07-04 17:30:06

尝试手动添加SpongyCastle

代码语言:javascript
复制
Security.insertProviderAt(BouncyCastleProvider(), 1);

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(256, random);
KeyFactory kaif = KeyFactory.getInstance("EC");
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();

将以下代码添加到您的build.gradle依赖项中:

代码语言:javascript
复制
/* spongy castle */
implementation "com.madgag.spongycastle:core:1.58.0.0"
implementation "com.madgag.spongycastle:prov:1.58.0.0"

确保BouncyCastleProvider()来自spongycastle

import org.spongycastle.jce.provider.BouncyCastleProvider

票数 3
EN

Stack Overflow用户

发布于 2019-07-26 06:11:25

还可以添加BouncyCastleProvider别名bcprov-jdk15on

代码语言:javascript
复制
dependencies {
    // https://mvnrepository.com/artifact/org.bouncycastle
    implementation "org.bouncycastle:bcprov-jdk15on:1.60"
    implementation "org.bouncycastle:bcpkix-jdk15on:1.60"
}
票数 0
EN

Stack Overflow用户

发布于 2019-08-09 19:36:08

删除提供程序("BC")并手动插入BouncyCastle

代码语言:javascript
复制
Security.removeProvider("BC");
Security.insertProviderAt(BouncyCastleProvider(), 1);

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(256, random);
KeyFactory kaif = KeyFactory.getInstance("EC");
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();

将以下代码添加到您的build.gradle依赖项中:

代码语言:javascript
复制
/* Bouncy castle */
implementation 'org.bouncycastle:com.springsource.org.bouncycastle.jce:1.46.0'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56884608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档