java – Android:Generating Elliptic Curve KeypPair
发布时间:2020-12-15 02:15:12 所属栏目:Java 来源:网络整理
导读:我正在尝试基于Eliptic Curves Diffie Hellman实现密钥生成.现在我想自己指定我的Eliptic曲线,所以我采用了参数 from here. 我写的代码是为了实现这个: public void createKey(){ // base point (generator???) BigInteger x = new BigInteger("2fe13c0537b
我正在尝试基于Eliptic Curves Diffie Hellman实现密钥生成.现在我想自己指定我的Eliptic曲线,所以我采用了参数
from here.
我写的代码是为了实现这个: public void createKey(){ // base point (generator???) BigInteger x = new BigInteger("2fe13c0537bbc11acaa07d793de4e6d5e5c94eee8",16); BigInteger y = new BigInteger("289070fb05d38ff58321f2e800536d538ccdaa3d9",16); // the order of generator BigInteger n = new BigInteger("5846006549323611672814741753598448348329118574063",10); // curves coefficients BigInteger ab = new BigInteger("1",2); // curves cofactor BigInteger h = new BigInteger("2",10); // exponents of the equotation int[] ks = {7,6,3}; ECFieldF2m ecField = new ECFieldF2m(163,ks); // Elliptic curve EllipticCurve ec = new EllipticCurve(ecField,ab,ab); // GENERATOR POINT ECPoint g = new ECPoint(x,y); // Parameter specs? ECParameterSpec ecps = new ECParameterSpec(ec,g,n,h.intValue()); try { // get keypair KeyPairGenerator kg = KeyPairGenerator.getInstance("ECDSA"); kg.initialize(ecps,new SecureRandom()); KeyPair kp = kg.generateKeyPair(); Log.d("SECLIENT"+type,kp.getPublic().toString()); Log.d("SECLIENT"+type,kp.getPrivate().toString()); }catch (Exception e){ e.printStackTrace(); } } 此时,代码编译.但是它在try_catch块中失败,它必须生成KeyPair. 错误消息是: java.lang.RuntimeException:无法创建EC KeyFactory:未处理的字段类java.security.spec.ECFieldF2m 有人有这个问题吗?我怎么解决这个问题? 解决方法
我没有遇到你遇到的同样问题,但是因为你在Android中使用EC并且有一个奇怪的RuntimeException,我会留给你2美分.希望能帮助到你.
我有另一个奇怪的错误(OEM相关) java.lang.RuntimeException: error:0f06707b:elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP 在尝试使用时 KeyAgreement.getInstance("ECDH); 发生在我身上的是我将SpongyCastle添加为SecurityProvider,这样做: Security.addProvider(new BouncyCastleProvider()); 对于某些设备,一切都按预期工作,但在其他设备(即LGE Nexus 5),我得到了完全相同的例外. 为我修复它的方法是改变我添加SpongyCastle的方式并做: Security.insertProviderAt(new BouncyCastleProvider(),1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |