<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python實(shí)現(xiàn)RSA無填充加密,兼容BouncyCastle

      場景

      某系統(tǒng)登錄時密碼經(jīng)過前臺rsa加密傳給后端,為實(shí)現(xiàn)模擬登錄需要原樣生成加密串。

      分析

      前臺通過RSA.js、BigInt.js、Barrett.js三個js文件實(shí)現(xiàn)加密,公鑰通過ajax請求獲得empoent、module。

      rsa算法其實(shí)就是通過這兩個參數(shù)計(jì)算實(shí)現(xiàn)公鑰加密,所以正常情況下使用常規(guī)加密庫即可達(dá)到目的。

      但實(shí)際測試發(fā)現(xiàn)使用cryptography、pycryptodem等庫加密結(jié)果與js輸出不一致且每次都不同。其實(shí)常規(guī)庫會按一定規(guī)則對原文隨機(jī)填充后再加密,這樣可保證相當(dāng)?shù)陌踩浴?/p>

      于是考慮如何用python實(shí)現(xiàn)無填充的加密。

      代碼

      經(jīng)過搜索發(fā)現(xiàn)了相當(dāng)簡單(不安全)的實(shí)現(xiàn)方式,代碼如下:

      if __name__ == '__main__':
          # 實(shí)為16進(jìn)制串,前補(bǔ)0
          e = '010001'
          # m也需要補(bǔ)00
          m = '008eb933413be3234dddd2730fbb1d05c8848a43d5dc3bdd997f2a9935fba6beb9ffb36854482b0b46cf7e6f9afbbe2e2e7d606fde20bec57dbf722e7985192e8813e6b67628a6f202cf655b7d2ffce4e9dc682dd6034ae706c8e255f25e4051b9ca43f25b3ad686aac9c8f6aeb71d921c13a255c806f78a5a7b9a356c2dd274e3'
          m = int.from_bytes(bytearray.fromhex(m), byteorder='big')
          e = int.from_bytes(bytearray.fromhex(e), byteorder='big')
          # js加密為反向,為保持一致原文應(yīng)反向處理,所以這里原文實(shí)際為204dowls
          plaintext = 'slwod402'.encode('utf-8')
          # 無填充加密邏輯
          input_nr = int.from_bytes(plaintext, byteorder='big')
          crypted_nr = pow(input_nr, e, m)
          keylength = math.ceil(m.bit_length() / 8)
          crypted_data = crypted_nr.to_bytes(keylength, byteorder='big')
          print(crypted_data.hex())
          # 72ff82c8f227ba9cf429635b89291b2d7ef54bcf8635af432b9917bd3593d8d8aa0c186764cef86c8530d349db6132521a9c70af939a0242bb3d01ce7094cf91f3a058742fc680d70b17c4441ebf60fd4f92bce660e4785fe56d85ac7f7023f4ccf702c247f37b36a255dc04d9ce14745f422c6113290ff9b479494fd805557e

       

      另附上從empoent、module生成公鑰方法,需要的朋友可以參考:

      from cryptography.hazmat.backends import default_backend
      from cryptography.hazmat.primitives import serialization, hashes
      from cryptography.hazmat.primitives.asymmetric import rsa, padding
      
      if __name__ == "__main__":
          m = int.from_bytes(bytearray.fromhex(m), byteorder='big')
          e = int.from_bytes(bytearray.fromhex(e), byteorder='big')
          key = rsa.RSAPublicNumbers(e, m).public_key(default_backend())
          pem = key.public_bytes(
              encoding=serialization.Encoding.PEM,
              format=serialization.PublicFormat.SubjectPublicKeyInfo
          )
          with open('key.pem', 'w+') as f:
              f.writelines(pem.decode())

       

      參考

      Java-web中利用RSA進(jìn)行加密解密操作的方法示例 

      Java 進(jìn)行 RSA 加解密時不得不考慮到的那些事兒 

      https://github.com/pyca/cryptography/issues/2735

      posted @ 2018-12-25 14:04  超軟毛毛蟲  閱讀(1855)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 秋霞人妻无码中文字幕| 欧美视频免费一区二区三区| 久久久久久国产精品美女| 亚洲综合无码一区二区| 国产一区二区av天堂热| 天堂av在线一区二区| 浮妇高潮喷白浆视频| 国产毛片三区二区一区| 高清日韩一区二区三区视频| 妓院一钑片免看黄大片| 伊伊人成亚洲综合人网香| 国产精品中文第一字幕| 亚洲人成色7777在线观看不卡| 国产成人综合久久亚洲av| 99国产欧美另类久久久精品| 女人被狂躁到高潮视频免费软件| 国产成熟女人性满足视频| 武川县| AI做受???高潮AAAA视频| 亚洲一卡2卡3卡4卡精品| 欧美大胆老熟妇乱子伦视频| 色综合色综合久久综合频道| 亚洲AV日韩AV激情亚洲| 亚洲gv天堂无码男同在线观看| 男女激情一区二区三区| 无码精品人妻一区二区三区湄公河 | 最近中文字幕完整版hd| 国产亚洲精品午夜福利| 马公市| 综合亚洲网| 办公室强奷漂亮少妇视频| 成人拍拍拍无遮挡免费视频| 中文字幕亚洲精品第一页| 国产成人精品日本亚洲| 日韩毛片在线视频x| 亚洲天堂在线免费| 人人爽人人爽人人片a免费| 亚洲精品综合久久国产二区| 极品少妇xxxx| 日韩午夜福利视频在线观看| 人妻少妇偷人精品一区|