700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > RSA公钥格式PKCS#1 PKCS#8互转(微信获取RSA加密公钥)

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

时间:2019-09-10 09:01:37

相关推荐

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公钥)参考文章:

/p/efb1dcce6e4a

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。