RSA matapōkeretia i runga poraka

He raruraru - he uaua ki te whakaputa i tetahi tau matapōkere i roto i te whatunga kua wehea. Tata ki nga poraka katoa kua pa ki tenei. Ae, i roto i nga whatunga kaore he whakawhirinaki i waenga i nga kaiwhakamahi, ko te hanga i tetahi tau matapōkere kaore e taea te whakakore i nga raruraru maha.

I roto i tenei tuhinga ka korero matou ki a koe me pehea te whakaoti rapanga ma te whakamahi i nga keemu hei tauira. Ko te tuatahi o ratou Ngaru Xmas Tree. Mo te whakawhanaketanga, i hiahiatia e matou he kaihanga tau matapōkere.

RSA matapōkeretia i runga poraka

I te timatanga, i whakamahere matou ki te whakaputa i tetahi tau i runga i nga korero mai i te poraka. Heoi, katahi ka marama: ka taea te raweke i te nama, ko te tikanga kaore i te pai te otinga.

I puta mai he otinga: whakamahia te kaupapa commit-expand. I matapaetia e te tūmau he nama mai i te 1 ki te 5, ka tāpirihia he tote ki roto, katahi ka whakangaohia te hua ma te whakamahi Nga mahi a Keccak. I tukuna e te tūmau te kirimana atamai me te nama kua tiakina i mua. Ka puta ko te keemu ka heke iho ki te kaiwhakamahi e kii ana i te nama huna e te hash.

I tukuna e te kaitakaro he peti, a ka tukuna e te kaimau te nama huna me te "tote" ki te kirimana atamai. I roto i nga kupu ngawari, i whakaatuhia e ia nga kaari. Whai muri i tera, ka tirohia e te kaimau nga nama ka whakatau mena i toa te kaiwhakamahi, i hinga ranei.

Mena kaore i tukuna e te tūmau he nama, he "tote" ranei mo te manatoko, ka toa te kaiwhakamahi. I tenei keehi, mo ia keemu he mea tika ki te tuku i tetahi kirimana atamai i mua me te whakauru i nga toa toa ki roto. I puta he raruraru, he nui te wa me te utu nui. I taua wa kaore he otinga haumaru.

Ina tata nei, i whakaaro te roopu Tradisys ki te taapiri i tetahi mahi ki te kawa Waves rsaVerify(). Ka tirohia te mana o te hainatanga RSA i runga i te taviri a te iwi me te kii motuhake. Ko te mutunga mai, kua taapirihia te waahanga.

Kua whakawhanakehia e matou e toru nga keemu: Kaihoroi Mataono, Flip Moni и Haere i runga Ngaru. Ka whakatinanahia e ia tangata te hangarau tau matapōkere. Kia mohio tatou me pehea te mahi.

RSA matapōkeretia i runga poraka

Me titiro ki te whakaputa tau matapōkere mā te whakamahi i te Ride on Waves hei tauira. Ka kitea te kirimana atamai konei.

Haere ki te ripa hōtuhi ka tīpako Kua whakakorehia. Ka kite koe i te waehere kirimana atamai (aka script).

RSA matapōkeretia i runga poraka

Kei roto i te waehere kirimana atamai he huinga mahi. Ko nga mea kua tohua hei @Callable ka taea te whakarewa ma te whakamahi Nga whakawhitinga tono. E hiahia ana matou ki nga mahi e rua: bet и whakahoki iho:

  • bet mahi (playerChoice)
  • mahi tango(gameId,rsaSign)

1. Ka tohua e te kaiwhakamahi te roa o te wahanga me te rahi o te peti.

RSA matapōkeretia i runga poraka

2. Ka hangaia e te kiritaki he mahi peti. Mo te ahua o runga ake nei bet("50").

3. Ka tukuna e te kiritaki he tauwhitinga Invocation ki te wahitau kirimana atamai (paoho InvocationTx). Kei roto i te tauwhitinga te mahi peti hei tawhā karanga. Ko te tikanga ko te tauwhitinga Invocation e whakaohooho ana i te mahi bet (whiriwhiri: String) i runga i te kirimana atamai.

RSA matapōkeretia i runga poraka

4. Whakaarohia te mahi peti:

@Callable(i)
func bet (playerChoice) = {
    let newGameNum = IncrementGameNum()
    let gameId = toBase58String(i.transactionId)
    let pmt = extract(i.payment)
    let betNotInWaves = isDefined(pmt.assetId)
    let feeNotInWaves = isDefined(pmt.assetId)
    let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice)
    let txIdUsed = isDefined(getString(this, gameId))
    if (betNotInWaves)
        then throw ("Bet amount must be in Waves")
        else if (feeNotInWaves)
            then throw ("Transaction's fee must be in Waves")
            else if (txIdUsed)
                then throw ("Passed txId had been used before. Game aborted.")
                else {
                    let playerPubKey58 = toBase58String(i.callerPublicKey)
                    let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "")
                    ScriptResult(WriteSet(cons(DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), cons(DataEntry(GAMESCOUNTERKEY, newGameNum), cons(DataEntry(gameId, gameDataStr), nil)))), TransferSet(cons(ScriptTransfer(SERVER, COMMISSION, unit), nil)))
                    }
    }

Ka tuhia e te mahi he keemu hou ki te ahua o te kirimana atamai. Ara:

  • Tautuhi ahurei mo tetahi keemu hou (id kēmu)
  • State Game = TUKUA
  • Ko te whiringa a te kaitakaro (waahanga roa 50)
  • Kī tūmatanui
  • Nga toa toa (i runga i te peti a te kaitakaro)

RSA matapōkeretia i runga poraka

Koinei te ahua o te rekoata raraunga i roto i te poraka (uara-matua):

{
    "type": "string",
    "value": "03WON_0283_448t8Jn9P3717UnXFEVD5VWjfeGE5gBNeWg58H2aJeQEgJ_06574069_09116020000_0229",
    "key": "2GKTX6NLTgUrE4iy9HtpSSHpZ3G8W4cMfdjyvvnc21dx"
  }

"Key" (key) – id kēmu kēmu hou. Ko nga toenga raraunga kei roto i te rarangi o te mara "uara". Ka penapenahia enei urunga ki te ripa Raraunga kirimana atamai:

RSA matapōkeretia i runga poraka

RSA matapōkeretia i runga poraka

5. Ka "titiro" te tūmau ki te kirimana atamai ka kitea te tauwhitinga kua tukuna (kēmu hou) ma te whakamahi i te poraka Api. Ko te id Game o te keemu hou kua tuhia ki roto i te poraka, ko te tikanga kaore e taea te whakarereke, te awe ranei

6. Ka mahia e te tūmau he mahi tango (gameId, rsaSign). Hei tauira, penei:

withdraw ("FwsuaaShC6DMWdSWQ5osGWtYkVbTEZrsnxqDbVx5oUpq", "base64:Gy69dKdmXUEsAmUrpoWxDLTQOGj5/qO8COA+QjyPVYTAjxXYvEESJbSiCSBRRCOAliqCWwaS161nWqoTL/TltiIvw3nKyd4RJIBNSIgEWGM1tEtNwwnRwSVHs7ToNfZ2Dvk/GgPUqLFDSjnRQpTHdHUPj9mQ8erWw0r6cJXrzfcagKg3yY/0wJ6AyIrflR35mUCK4cO7KumdvC9Mx0hr/ojlHhN732nuG8ps4CUlRw3CkNjNIajBUlyKQwpBKmmiy3yJa/QM5PLxqdppmfFS9y0sxgSlfLOgZ51xRDYuS8NViOA7c1JssH48ZtDbBT5yqzRJXs3RnmZcMDr/q0x6Bg==")

7. Ka tukuna e te tūmau he tauwhitinga Invocation ki te kirimana atamai (pāho InvocationTx). Kei roto i te tauwhitinga he waea ki te mahi tangohanga (gameId, rsaSign):

RSA matapōkeretia i runga poraka

Kei roto i te mahi id kēmu keemu hou me te hua o te hainatanga RSA o tetahi kaitautuhi ahurei me te kii motuhake. Ko te hua hainatanga kare i rereke.

He aha te tikanga o tenei?

He rite tonu te uara (id keemu) me te whakamahi i te tikanga hainatanga RSA. Ka whiwhi tatou i te hua rite tonu. Koinei te mahi a te RSA algorithm. Ko te nama whakamutunga e kore e taea te raweke, i te mea kaore i te mohiotia te id keemu me te hua o te tono RSA. He horihori hoki te kowhiri i te nama.

8. Ka whakaaetia e te Poraka te tauwhitinga. Ka whakahaerehia te mahi tango (gameId, rsaSign)

9. I roto i te mahi tango, ka puta te tangohanga Nga mahi GenerateRandInt (gameId, rsaSign). He kaihanga tau matapōkere tēnei

# @return 1 ... 100
func GenerateRandInt (gameId,rsaSign) = {
   	# verify RSA signature to proof random
    let rsaSigValid = rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
    if (rsaSigValid)
        then {
            let rand = (toInt(sha256(rsaSign)) % 100)
            if ((0 > rand))
                then ((-1 * rand) + 1)
                else (rand + 1)
            }
        else throw ("Invalid RSA signature")
    }

Rand - a he tau matapōkere.

Tuatahi, ka tangohia te aho, koinei te hua o te hainatanga RSA id kēmu kī tūmataiti (rsaWaitohu). Katahi ka whakamaoritia me SHA-256 (sha256(rsaWaitohu)).

Kaore e taea e matou te matapae i te putanga o te hainatanga me te hashing o muri mai. Na reira, e kore e taea te whakaawe i te whakatipuranga o te tau matapōkere. Ki te tiki tau i roto i tetahi awhe (hei tauira, mai i te 1 ki te 100), whakamahia te mahi tahuri toInt me te %100 (he rite ki te ki).

I te timatanga o te tuhinga i whakahuahia e matou te mahi rsaVerify(), ka taea e koe te tirotiro i te whaimana o te hainatanga RSA ma te whakamahi i tetahi kii motuhake ki te taha whanui. Anei te wahanga GenerateRandInt(gameId,rsaSign):

rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)

Ko te kī tūmatanui RSAPUBLIC me te aho rsaSign ka tukuna ki te tāuru. Ka tirohia te waitohu mo te mana. Ka puta te nama mena ka angitu te haki. Ki te kore, ka whakaaro te punaha kaore i te whaimana te hainatanga (Waitohu RSA Muhu).

Me haina e te tūmau te id kēmu me te kī tūmataiti ka tukuna he waitohu Rsa whaimana i roto i te 2880 poraka. Kua whirihorahia te tawhā i te wa e tukuna ana te kirimana atamai. Mena kaore he mea i puta i roto i te wa i whakaritea, ka toa te kaiwhakamahi. I tenei keehi, me tuku te taonga ki to wahitau. Ka puta ko "kaore e pai mo te kaimau ki te tinihanga", na te mea ka mate tenei. Kei raro nei he tauira.

RSA matapōkeretia i runga poraka

Kei te takaro te kaiwhakamahi Kaihoroi Mataono. I whiriwhiria e au te 2 o nga taha e 6 o te mataono, ko te peti he 14 NGA NGARU. Ki te kore e tukuna e te tūmau he waitohu RSA whaimana ki te kirimana atamai i roto i te wa kua tohua (2880 paraka), ka tangohia e te kaiwhakamahi te 34.44 WAVES.

Hei whakaputa tau i roto i nga keemu, ka whakamahi matou i te oracle - he punaha o waho, kore-poraka. Ka mahia e te tūmau he waitohu RSA o te id kēmu. Ka tirohia e te kirimana atamai te mana o te hainatanga me te whakatau i te toa. Ki te kore e tukuna e te tūmau tetahi mea, ka toa aunoa te kaiwhakamahi.

He tikanga whakatipuranga pono tenei, na te mea kaore e taea te raweke. Ko nga taakaro Tradisys katoa e mahi ana i runga i te algorithm kua whakaahuahia. Koinei te mahi a nga keemu poraka. He maamaa nga mea katoa me te manatoko. Karekau he taurite o taua punaha i roto i etahi atu poraka. He ahua ohorere tenei.

Source: will.com

Tāpiri i te kōrero