当前位置: 首页 > 知识库问答 >
问题:

颤振RSA加密-无法使用公钥加密字符串

南宫建白
2023-03-14

在那里~我是新来的flutter开发,我试图使用Node.js服务器发送一个公钥到flutter加密密码但是,它就是不工作,我试图通过JSON格式或通过PEM文件的flutter和使用[Flutter]-加密和[Flutter]-simple_rsa库做加密,但它仍然不能工作。我怎么能这么做?请帮忙,多谢。

[Node.js]-使用[Node rsa]创建密钥[Flatter]-使用[encrypt]加密字符串代码,如下所示:

服务器端[Node.js]:

密钥发生器

function generator() {
         publicDer = key.exportKey('pkcs1-private-pem')
         privateDer = key.exportKey('pkcs1-public-pem')
        fs.writeFile('./pem/public.pem', publicDer, (err) => {
        if (err) throw err
        })
        fs.writeFile('./pem/private.pem', privateDer, (err) => {
        if (err) throw err
        })
    }

发送密钥。将pem文件发送到客户端

//------------------------send file to client
app.get('/getFile',(req,res)=>{
    var filePath = path.join(__dirname, './pem/public.pem');
    var stat = fs.statSync(filePath);
    res.writeHead(200,{
        'Content-Type': 'application/x-x509-ca-cert',
        'Content-Length': stat.size,
        'Content-Disposition' :'filename="PublicKey.pem'
    });
    var readStream = fs.createReadStream(filePath);
    readStream.pipe(res);
});

客户端[颤振]

  Future<String> encode(pwd) async{
    try{
      Response response = await Dio().post("http://10.0.2.2:8124/login/key");
      print(response.data['pub_key'].toString());
      var tmp_str = 'Hello';
 
      if(await _checkPermission()==true){
       var tmp_path = await  _createPath();
       var result =  _downloadFile("http://10.0.2.2:8124/getFile",tmp_path);
       tmp_path += "PublicKey.pem";
      final publicKey = await parseKeyFromFile<RSAPublicKey>(tmp_path);
       final encrypter = Encrypter(RSA(publicKey: publicKey));
       final encrypted = encrypter.encrypt(tmp_str);
       print(encrypted.base64);
      }
    }catch(e){
          return e.toString();
    }
  }

下载pem文件成功。结果如下:在此处输入图像描述

共有1个答案

漆雕洋
2023-03-14

你可以使用这个软件包https://pub.dev/packages/encrypt#asymmetric请注意,在下面的示例中,我无法解析pem密钥,所以我修改了一点类似于bellow的内容,然后它就可以工作了。

final publicPem = await rootBundle.loadString('assets/public.pem');
final publicKey1 = RSAKeyParser().parse(publicPem) as RSAPublicKey;
 类似资料:
  • 问题内容: 我正在编写一个用于传输文件的小型应用程序,或多或少地将其作为一种学习更多编程加密基础的方法。这个想法是生成一个RSA密钥对,交换公共密钥,并发送AES iv和密钥以进一步解密。我想用接收者的RSA公钥加密AES密钥,如下所示: 然后,我将密钥值写给接收器,并按如下方式解密: 在控制台的另一端,我将其作为输出: 此外,如果我创建一个大小为16的字节数组,并将cipher.doFinal(

  • 我有一个RSA公钥证书。我可以使用具有。PEM扩展名或仅将其用作具有以下格式的字符串: 启动RSA公共密钥 {KEY} -----结束RSA公钥----- 我试图使用此密钥向服务器发送加密的JSON。我尝试了许多其他相关堆栈溢出问题的解决方案,但没有一个答案不适合我。这个答案似乎有道理https://stackoverflow.com/a/43534042,但有些东西不能正常工作,可能是因为X50

  • 我使用Delphi XE和Lockbox3.5,我想加密一个字符串,该字符串具有支付网关提供的公钥,需要操作,公钥类似于:------开始公钥------这里的职员------结束公钥------我无法使RSA编解码器读取该公钥,我的代码如下: 编解码器cdcRA链接到CryptoLibrary,密码为(RSA公钥加密系统*),链接模式为空,但此代码失败,并出现内存不足错误。谢谢你的提示。。 演示

  • 并且我将这个函数称为用RSA公钥加密DSA密钥的函数:

  • 说明 微信支付-获取RSA加密公钥SDK,企业付款到银行卡接口需要。 你还需要执行openssl rsa -RSAPublicKey_in -in weixin-rsa-public.pem -pubout 将命令行输出的证书内容覆盖到weixin-rsa-public.pem文件中才可使用 官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch

  • 如何从Go中的字符串导入RSA公钥,以便用于加密数据? 我的程序应该执行以下操作: > 接收一个用Base64编码的公钥 将此公钥从Base64解码为字节 导入公钥,以便Go的RSA实现可以使用(问题在这个阶段) 加密AES密钥: 提前谢谢! 解决方案: 公钥必须使用crypto/x509包进行解码。 例如: 然后可以使用带有RSA的进行加密。