日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RSA公钥格式PKCS#1,PKCS#8互转(微信获取RSA加密公钥)

發布時間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RSA公钥格式PKCS#1,PKCS#8互转(微信获取RSA加密公钥) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/把RSA公鑰格式PKCS#1轉換成PKCS#8org.bouncycastle.asn1.pkcs.RSAPublicKey rsaPublicKey = org.bouncycastle.asn1.pkcs.RSAPublicKey.getInstance( org.bouncycastle.util.encoders.Base64.decode(publicKeyString)); java.security.spec.RSAPublicKeySpec publicKeySpec = new java.security.spec.RSAPublicKeySpec(rsaPublicKey.getModulus(), rsaPublicKey.getPublicExponent());java.security.KeyFactory keyFactory = java.security.KeyFactory.getInstance("RSA");java.security.PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);

RSA公鑰格式PKCS#1,PKCS#8互轉說明(命令的方式)

  • PKCS#1 轉 PKCS#8:
  • openssl rsa -RSAPublicKey_in -in <filename> -pubout

  • PKCS#8 轉 PKCS#1:
  • openssl rsa -pubin -in <filename> -RSAPublicKey_out

    ?

  • PKCS#1 格式密鑰:
  • -----BEGIN RSA PUBLIC KEY-----
    MIIBCgKCAQEArT82k67xybiJS9AD8nNAeuDYdrtCRaxkS6cgs8L9h83eqlDTlrdw
    zBVSv5V4imTq/URbXn4K0V/KJ1TwDrqOI8hamGB0fvU13WW1NcJuv41RnJVua0QA
    lS3tS1JzOZpMS9BEGeFvyFF/epbi/m9+2kUWG94FccArNnBtBqqvFncXgQsm98JB
    3a62NbS1ePP/hMI7Kkz+JNMyYsWkrOUFDCXAbSZkWBJekY4nGZtK1erqGRve8Jbx
    TWirAm/s08rUrjOuZFA21/EI2nea3DidJMTVnXVPY2qcAjF+595shwUKyTjKB8v1
    REPB3hPF1Z75O6LwuLfyPiCrCTmVoyfqjwIDAQAB
    -----END RSA PUBLIC KEY-----

    ?

  • PKCS#8 格式密鑰:
  • -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArT82k67xybiJS9AD8nNA
    euDYdrtCRaxkS6cgs8L9h83eqlDTlrdwzBVSv5V4imTq/URbXn4K0V/KJ1TwDrqO
    I8hamGB0fvU13WW1NcJuv41RnJVua0QAlS3tS1JzOZpMS9BEGeFvyFF/epbi/m9+
    lkUWG94FccArNnBtBqqvFncXgQsm98JB3a42NbS1ePP/hMI7Kkz+JNMyYsWkrOUF
    DCXAbSZkWBJekY4nGZtK1erqGRve8JbxTWirAm/s08rUrjOuZFA21/EI2nea3Did
    JMTVnXVPY2qcAjF+595shwUKyTjKB8v1REPB3hPF1Z75O6LwuLfyPiCrCTmVoyfq
    jwIDAQAB
    -----END PUBLIC KEY-----

    ?

    ?

    #!/usr/bin/env python
    # coding: utf8
    #***************************************************************************************************

    import argparse
    import sys, glob, os
    import xml.etree.ElementTree as xmltree

    #***************************************************************************************************
    class dsn(object):
    ? class AccessDSNFileError(Exception):
    ? ? pass

    ? class InvalidDSNFileFormat(SyntaxError):
    ? ? pass

    ? def __init__(self, **kwargs):
    ? ? if 'file' in kwargs:
    ? ? ? self.dsn = None
    ? ? ? self.pubkey = None
    ? ? ? try:
    ? ? ? ? xml = xmltree.parse (kwargs['file'])
    ? ? ? ? if xml:
    ? ? ? ? ? f_device = xml.getroot ()
    ? ? ? ? ? if f_device.tag == 'f-device':
    ? ? ? ? ? ? for child in f_device:
    ? ? ? ? ? ? ? if child.tag == 'dsn':
    ? ? ? ? ? ? ? ? self.dsn = child.text
    ? ? ? ? ? ? ? elif child.tag == 'public-key':
    ? ? ? ? ? ? ? ? self.pubkey = child.text

    ? ? ? ? if self.dsn is None or self.pubkey is None:
    ? ? ? ? ? raise SyntaxError

    ? ? ? except SyntaxError:
    ? ? ? ? raise dsn.InvalidDSNFileFormat
    ? ? ? except:
    ? ? ? ? raise dsn.AccessDSNFileError

    ? ? elif 'dsn' in kwargs and 'pubkey' in kwargs:
    ? ? ? ? self.dsn ? ?= kwargs['dsn']
    ? ? ? ? self.pubkey = kwargs['pubkey']

    #***************************************************************************************************
    # main
    if __name__ == '__main__':
    ? parser = argparse.ArgumentParser()
    ? parser.add_argument('dsn_file', help='DSN file')
    ? args = parser.parse_args()

    ? for file in glob.glob (args.dsn_file):
    ? ? try:
    ? ? ? info = dsn (file=file)
    ? ? ? BEGIN = '-----BEGIN PUBLIC KEY-----'
    ? ? ? END = '-----END PUBLIC KEY-----'
    ? ? ? with os.popen ('openssl rsa -pubin -RSAPublicKey_in << END\n' + info.pubkey + '\nEND\n') as f:
    ? ? ? ? pubkey = f.read ()
    ? ? ? i1 = pubkey.find (BEGIN)
    ? ? ? i2 = pubkey.find (END)
    ? ? ? if i1 >= 0 and i2 > i1:
    ? ? ? ? pubkey = pubkey[i1+len (BEGIN):i2]
    ? ? ? ? pubkey = pubkey.replace ('\n', '')

    ? ? ? print
    ? ? ? print 'id dev_id {}'.format (info.dsn)
    ? ? ? print 'file start 0'
    ? ? ? s = pubkey
    ? ? ? len = 80
    ? ? ? while s:
    ? ? ? ? print 'file add {}'.format (s[:len])
    ? ? ? ? s = s[len:]
    ? ? ? print 'conf save'
    ? ? except:
    ? ? ? import traceback
    ? ? ? traceback.print_exc ()

    #***************************************************************************************************
    ?

    ?

    微信企業付款到銀行卡(包含獲取微信端的RSA公鑰)參考文章:

    https://www.jianshu.com/p/efb1dcce6e4a

    總結

    以上是生活随笔為你收集整理的RSA公钥格式PKCS#1,PKCS#8互转(微信获取RSA加密公钥)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。