rsa公钥RSAKeyParser().解析错误格式

问题描述 投票:0回答:1

我使用以下代码在nodejs端生成了rsa密钥对: const crypto = require('crypto');

    // Generate the RSA key pair
    const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
        modulusLength: 2048,  // the length of your key in bits
        publicKeyEncoding: {
            type: 'pkcs1',      
            format: 'pem'
        },
        privateKeyEncoding: {
            type: 'pkcs1',     
            format: 'pem'
        }
    });

res.status(201).json({ message: '患者创建成功', 钱包:钱包, rsa密钥对:{ 公钥: 公钥, } });

然后我将公钥发送到 flutter 端,然后在 flutter 端我无法解析公钥,我已经对公钥进行了硬编码:

var publicKeyString =“-----开始公钥-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCE5COmhzUZLWHMW8FvgFG2QUdDmPvwOlvSHGrSV+asZOrVLzbwJQl0q3V0cZXyRR/j4YtwRI9x0z6nK25KfNDaGDM sgRiyqNil3dzE7c5QHd1CTC50RnDZnxztQBdNY3/WGFxBcF4WM2YtRqG5f10iSu0K5B7sX3k54bpMb0vHfQIDAQAB-----结束公钥-----";

// Convert the keys from string to usable format
   final publicKey = RSAKeyParser().parse(publicKeyString) as RSAPublicKey;

我在这一行遇到某种格式错误。

我尝试通过更改密钥格式来修复此错误,但没有成功

flutter dart
1个回答
0
投票

使用

package:basic_utils

这个实用程序可以解析你的字符串。

import 'dart:convert';

import 'package:basic_utils/basic_utils.dart';
import 'package:pointycastle/export.dart';

RSAPublicKey _publicKey(String material) {
  return CryptoUtils.rsaPublicKeyFromDERBytes(
    base64.decode(
      material
          .replaceAll('\\n', '')
          .replaceAll('\n', '')
          .replaceAll('-----BEGIN PUBLIC KEY-----', '')
          .replaceAll('-----END PUBLIC KEY-----', ''),
    ),
  );
}

请注意,您的密钥在第一行之后和最后一行之前似乎没有换行符。如果您添加这些(

-----BEGIN PUBLIC KEY-----\nMIGfMA...
,那么您可以使用较短的

final key = CryptoUtils.rsaPublicKeyFromPem(publicKeyString);
© www.soinside.com 2019 - 2024. All rights reserved.