javascript - 从 Javascript (nodeJS) 到 dart (Flutter) 以及从 dart 到 Javascript 的加密和解密

标签 javascript flutter encryption dart rsa

正如标题所示,我想知道是否有一种加密和解密的方法,例如使用 RSA 算法、从 javascript 到 dart 的数据以及相反的方法。我看到有一个库“js”,它允许您在 dart 中使用 javascript 代码,但我无法将它用于我需要的东西。我也尝试使用为两种语言提供的各种库来执行这些加密操作,但它们在两种语言之间不兼容。

最佳答案

注册机 (NodeJS)
文档:https://nodejs.org/api/crypto.html#crypto_crypto_generatekeypair_type_options_callback

const { generateKeyPair } = require('crypto');

generateKeyPair('rsa', {
    modulusLength: 4096,    // key size in bits
    publicKeyEncoding: {
        type: 'spki',
        format: 'pem',
    },
    privateKeyEncoding: {   
        type: 'pkcs8',      
        format: 'pem',
    },
}, (err, publicKey, privateKey) => {
    // Handle errors and use the generated key pair.
});
NodeJS 通过 加密JS加密 图书馆
节点js加密:https://www.npmjs.com/package/node-jsencrypt
JS加密:https://travistidwell.com/jsencrypt/#
const JSEncrypt = require('node-jsencrypt');  

function encrypt(text, key) {
    const crypt = new JSEncrypt();
    crypt.setKey(key);
    return crypt.encrypt(text);
}

function decrypt(encrypted, privateKey) {
    const crypt = new JSEncrypt();
    crypt.setPrivateKey(privateKey);
    return crypt.decrypt(encrypted);
}
Dart 通过 加密密码
GitHub:https://github.com/konstantinullrich/crypton
import 'package:crypton/crypton.dart';

import 'encryption.dart';

class AsymmetricCrypt implements Encryption {
  final String _key;
  RSAPublicKey _publicKey;
  RSAPrivateKey _privateKey;

  AsymmetricCrypt._(this._key);

  @override
  String encrypt(String plain) {
    _publicKey ??= RSAPublicKey.fromPEM(_key);
    return _publicKey.encrypt(plain);
  }

  @override
  String decrypt(String data) {
    _privateKey ??= RSAPrivateKey.fromPEM(_key);
    return _privateKey.decrypt(data);
  }
}

关于javascript - 从 Javascript (nodeJS) 到 dart (Flutter) 以及从 dart 到 Javascript 的加密和解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59586980/

相关文章:

PHP MySQL - 在不存储 key 的情况下动态加密解密数据

javascript - 我是否正确地进行了 AES 256 加密和解密 Node.js?

javascript - $(function() { }) 是否与 $(document).ready(function() { }) 完全相同

javascript - ng-repeat Angular 数组对象

javascript - React、Javascript - 在 "store"的上下文中找不到 "Connect(App)"

java - 如何在解析 html 页面时从 html 页面中的 javascript 函数中提取变量的值

Flutter 使用 CustomPainter 绘制心形

json - 如何在Flutter中重新组合JSON以匹配数据类型?

android - Flutter 中自签名证书的 SSL 握手错误

java - org.apache.commons.io.IOUtils.toByteArray 的 Android 等价物