AMcoder - javascript, python, java, html, php, sql

Անվավեր բանալու սպեցիֆիկ բացառություն բայթերից հանրային բանալին ստեղծելիս

Քանի որ ես գիտեմ, որ ինչ-որ մեկը պատրաստվում է ինձ ասել, որ օգտագործեմ այլ բան, ես չեմ կարող: Սա uni նախագծի համար է, և ես պետք է հավատարիմ մնամ այս արձանագրություններին:

Ես կփորձեմ տեղադրել բոլոր համապատասխան ծածկագիրը:

Նախ, իմ հիմնական, ես անում եմ սա

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(512);
KeyPair pair = keyPairGen.generateKeyPair();

Այնուհետև այս զույգը անցնում եմ թելի վրա

Thread sender = new Thread(new UDPSend(s, host, peers.get(peer), portData, sents, lock, condition, pair));

Ուղարկողի դեպքում դա տեղի է ունենում

byte[] keyBuf = pair.getPublic().getEncoded();
DatagramPacket keyPacket = new DatagramPacket(keyBuf, keyBuf.length, InetAddress.getByName(peer), port);
ds.send(keyPacket);

Մեկ այլ թեմայում կա մի ընդունիչ, որն աշխատում է դա

byte[] keyBuf = new byte[1024];
DatagramPacket keyPacket = new DatagramPacket(keyBuf, keyBuf.length);
ds.receive(keyPacket);
byte[] keyBytes = keyPacket.getData();
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes));

Եվ այստեղ ես բացառություն եմ ստանում՝ Անվավեր բանալի Spec.

Այն հատվածը, որն իսկապես հուզում է ինձ, այն է, որ դա միայն երբեմն է պատահում: Երբեմն դա աշխատում է: Առաջին անգամ, երբ ես բեռնում եմ ծրագիրը, այն միշտ աշխատում է, բայց երբ ես գործարկում եմ այն ​​նորից անելու համար, այն ձախողվում է: Ցանկացած օգնություն գնահատելի է:


  • Եթե ​​ինչ-որ բան անվստահելի է աշխատում, և UDP-ն օգտագործվում է, ապա սովորաբար UDP-ն խնդիր է, քանի որ այն ըստ սահմանման անվստահելի է: Ես կտպեի բոլոր մուտքային UDP փաթեթները վեցանկյուն ձևով՝ տեսնելու, թե ինչ է ստացվում, օրինակ. քանի որ UDP փաթեթները կարող են մասնատվել, եթե դրանք չափազանց մեծ են. stackoverflow.com/questions/38723393/ 18.05.2020

Պատասխանները:


1

Իմ համակարգում ես փոխեցի ստացողի կողմից գիծը

byte[] keyBytes = keyPacket.getData();

to

byte[] keyBytes = Arrays.copyOf(keyPacket.getData(), keyPacket.getLength());

«keyPacket.getData()» մեթոդը կարծես սպասարկում է ամբողջական բուֆեր (1024 բայթ երկարությամբ), իսկ «keyPacket.getLenth()» մեթոդը ապահովում է տվյալների «իրական» երկարությունը։

18.05.2020
  • շնորհակալություն ներդրման համար, բայց մինչ այժմ ես արդեն փորձել եմ այդ, դեռևս նույն արդյունքը... Ես պատրաստվում եմ լուծել լուծումը, քանի որ ես խիստ ստիպված չեմ կիսել բանալին udp-ի միջոցով: 18.05.2020
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..