我在kotlin中有一个应用程序android,在raspberry-Pi上有一个Python。
在我的Android应用程序中,我从我的raspberry-Pi接收PublicKey作为Big Integer String,我需要将其转换为PublicKey以继续我的Diffie Hellman。
使用Android 5.0 API 21可以很好地运行但不适用于Android 8.0 API 26,我在generatePublic上有以下错误:由“com.android.org.bouncycastle.jcajce.provider.asymmetric.util.ExtendedInvalidKeySpecException:无效的DH公开引起键”
fun setReceivePublicKey(PublicKey: String?){
if(PublicKey != null) {
receivePublickeyInteger = PublicKey.toBigInteger(10)
val kf : KeyFactory = KeyFactory.getInstance(algorithm)
val spec = DHPublicKeySpec(receivePublickeyInteger,p, g)
receivePublicKey = kf.generatePublic(spec)
}
}
接收公钥:“1186077227678271540134862509873546604676586024525309469618216434360152823434999056481566892156846842514101786948011297818911589672275028242935710062913875151954912314844969895542136815935639151551824495652302435339103572121293460269849673020899573708935559027341320000586684514537431365310888999481071742463382911267789320258863598830395069544603326989392097657769707348691804224452973533413701448224774045051066571001832939497012508127767764295590745468802146946779724762449738116225105818944048461975843796127501652102207854858881733445450269991549328843268527039094247517538751801284281148484990234735369353511299021673752336297213365909273938355910119789784912925756917470664241207684485528488651231599946627996206087756203382782153653973676758525394929513362198592517449044771216536426414806442100590541816453615234374853999116975727517908588868986511359049342004004550720151991928954078445791206686994303438508485508357012971719850862634083256955999083221834362950792135463 522604929254266546089700839060745995960677398"
病人:5809605995369958062791915965639201402176612226902900533702900882779736177890990861472094774477339581147373410185646378328043729800750470098210924487866935059164371588168047540943981644516632755067501626434556398193186628990071248660819361205119793693985433297036118232914410171876807536457391277857011849897410207519105333355801121109356897459426271845471397952675959440793493071628394122780510124618488232602464649876850458861245784240929258426287699705312584509625419513463605155428017165714465363094021609290561084025893662561222573202082865797821865270991145082200656978177192827024538990239969175546190770645685893438011714430426409338676314743571154537142031573004276428701433036381801705308659830751190352946025482059931306571004727362479688415574702596946457770284148435989129632853918392117997472632693078113129886487399347796982772784615865232621289656944284216824611318709764535152507354116344703769998514148343807
G:2
算法:“DH”
更高版本执行更多更好的验证。其中一项检查是确保2 <y <p-2,其中y是收到的公钥,并且您未通过该检查,因此例外。如您所见,您收到的公钥比p大得多,表明您的系统中存在某个错误。