• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開(kāi)源項(xiàng)目:https://github.com/davyxu

               :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評(píng)論 :: 0 Trackbacks

            最近接入pp助手的服務(wù)器端支付, 按照PP官方提供的文檔來(lái)看, 需要服務(wù)器做RSA的驗(yàn)證.

            首先我們來(lái)看下

            RSA的幾個(gè)標(biāo)準(zhǔn)用法

            非對(duì)稱(chēng)加密解密

            假設(shè)A要把內(nèi)容傳輸給B

            1. B生成RSA的公鑰和密鑰, 這是成對(duì)出現(xiàn)的, 密鑰由B保存, 把公鑰告訴A

            2. A用B的公鑰加密內(nèi)容, 并把密文內(nèi)容傳輸給B

            3. B用密鑰解密

            驗(yàn)證

            證明某個(gè)內(nèi)容是你發(fā)的, 而不是被別人冒名頂替, 例如git的push中就帶有這個(gè)功能

            假設(shè)A有內(nèi)容,  B要驗(yàn)證內(nèi)容確實(shí)由A發(fā)出

            1. A生成公鑰和密鑰

            2. A將內(nèi)容做一個(gè)hash, 把hash碼用自己的密鑰加密并把這段密文發(fā)給B

            3. B用A的公鑰對(duì)密文進(jìn)行驗(yàn)證, 即可確認(rèn)密文是否由A發(fā)出

             

            可以看出, 兩種用法都是典型的非對(duì)稱(chēng)用法

            但PP助手卻干了件神奇的事情:

            非對(duì)稱(chēng)當(dāng)對(duì)稱(chēng)算法加解密

            在PP SDK官方文檔里, 我們找到了PHP語(yǔ)言的驗(yàn)證方法, 方法里使用了這樣一個(gè)API

            openssl_public_decrypt

            從官方文檔看得出這個(gè)使用openssl的算法庫(kù)

             

            類(lèi)似的, 還有Java, C++, Python語(yǔ)言的處理方法

            其中, C++也是用的openssl, Python則是需要預(yù)編譯C庫(kù),在Ubuntu下需要手工patch M2Crypto的_ssl.c文件.

             

            先不說(shuō)這些非正規(guī)的編譯,patch方法會(huì)造成多大的問(wèn)題, 單就這個(gè)用公鑰解密就很蛋疼

            從之前的RSA算法中了解, 只有對(duì)公鑰進(jìn)行驗(yàn)證的方法, 也就是只能得到是還是不是的結(jié)果. 但PP的SDK則要求必須用公鑰解密…

            解出的數(shù)據(jù)為一段json, 以對(duì)比是否有訂單篡改.

             

            那么這種做法就等效于, 用最簡(jiǎn)單的異或+一個(gè)公鑰進(jìn)行訂單加密, 然后同樣用這個(gè)公鑰進(jìn)行解密

            只不過(guò)用RSA感覺(jué)很高級(jí)…

            這種做法一旦公鑰在PP助手服務(wù)器或者玩家的開(kāi)發(fā)服務(wù)器, 甚至源代碼泄露, 那么馬上就有很大的偽造訂單的危險(xiǎn)

             

            我把這個(gè)做法發(fā)給朋友看, 他們說(shuō), 其實(shí)PP助手的開(kāi)發(fā)者只管用了RSA, 跟傳輸不是明文就好了, 至于什么信息安全, 都是屁!


            評(píng)論

            # re: pp助手服務(wù)器端支付的RSA的奇葩公鑰解密設(shè)計(jì) 2015-10-18 22:35 非仙
            不對(duì)吧?以前研究過(guò)RSA,確實(shí)可以用私鑰加密 公鑰解密的,并且可以防止篡改  回復(fù)  更多評(píng)論
              

            # re: pp助手服務(wù)器端支付的RSA的奇葩公鑰解密設(shè)計(jì) 2015-10-28 19:11 溪流
            具體“PP助手”的方案是什么,文中沒(méi)有具體說(shuō)呀
            如果是要防止被改,確實(shí)應(yīng)該私鑰加密公鑰解密,因?yàn)閯e人造不出你手頭的公鑰能解的數(shù)據(jù)(其實(shí)相當(dāng)于簽名啦,只是沒(méi)有先hash而已);如果要防止被偷看,那就應(yīng)該是公鑰加密私鑰解密,因?yàn)閯e人解不出可讀數(shù)據(jù)  回復(fù)  更多評(píng)論
              

            # re: pp助手服務(wù)器端支付的RSA的奇葩公鑰解密設(shè)計(jì) 2015-10-29 10:50 戰(zhàn)魂小筑
            公鑰加密也是可以做的, 最后只有按照他們的方法來(lái)做, 雖然我們不是太愿意在golang里引入cgo帶openssl公鑰解密  回復(fù)  更多評(píng)論
              

            亚洲午夜久久久影院| 国产成人久久精品一区二区三区| 无码任你躁久久久久久久| 亚洲国产成人久久综合一| 国产精品熟女福利久久AV | 香蕉久久夜色精品国产2020| 久久久久久久免费视频| 91久久精品91久久性色| 午夜精品久久久久久| 99精品国产在热久久| 亚洲国产香蕉人人爽成AV片久久 | 热99RE久久精品这里都是精品免费 | 18岁日韩内射颜射午夜久久成人| 香港aa三级久久三级老师2021国产三级精品三级在 | 国产午夜福利精品久久| 久久久一本精品99久久精品88| 国产成人精品久久二区二区 | 精品国产乱码久久久久久1区2区| 色天使久久综合网天天| 久久99精品综合国产首页| 精品伊人久久大线蕉色首页| 精品水蜜桃久久久久久久| 久久99亚洲网美利坚合众国| 少妇久久久久久被弄到高潮| 色综合久久综精品| 国产精品久久午夜夜伦鲁鲁| 久久久久精品国产亚洲AV无码| 久久精品综合一区二区三区| 久久美女人爽女人爽| 99re久久精品国产首页2020| 亚洲色大成网站www久久九| 亚洲国产成人精品女人久久久 | 日产精品久久久久久久性色| 久久综合鬼色88久久精品综合自在自线噜噜| 精品精品国产自在久久高清| 久久人人爽人人爽人人AV| 久久久久久久久久久久久久 | 婷婷综合久久中文字幕| 91视频国产91久久久| 91精品国产综合久久久久久| 精品无码久久久久久午夜|