正如标题所示,我想知道是否有一种加密和解密的方法,例如使用 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/