RSA公钥格式PKCS#1,PKCS#8互转(微信获取RSA加密公钥)
RSA公鑰格式PKCS#1,PKCS#8互轉說明(命令的方式)
openssl rsa -RSAPublicKey_in -in <filename> -pubout
openssl rsa -pubin -in <filename> -RSAPublicKey_out
?
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEArT82k67xybiJS9AD8nNAeuDYdrtCRaxkS6cgs8L9h83eqlDTlrdw
zBVSv5V4imTq/URbXn4K0V/KJ1TwDrqOI8hamGB0fvU13WW1NcJuv41RnJVua0QA
lS3tS1JzOZpMS9BEGeFvyFF/epbi/m9+2kUWG94FccArNnBtBqqvFncXgQsm98JB
3a62NbS1ePP/hMI7Kkz+JNMyYsWkrOUFDCXAbSZkWBJekY4nGZtK1erqGRve8Jbx
TWirAm/s08rUrjOuZFA21/EI2nea3DidJMTVnXVPY2qcAjF+595shwUKyTjKB8v1
REPB3hPF1Z75O6LwuLfyPiCrCTmVoyfqjwIDAQAB
-----END RSA PUBLIC KEY-----
?
-----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加密公钥)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32高级开发(12)-在GCC中使
- 下一篇: iPhone手机获取uuid 安装测试a