将加密代码从Java移动到Flatter

将加密代码从Java移动到Flatter,java,flutter,dart,encryption,Java,Flutter,Dart,Encryption,我有一个用颤振编写的移动android应用程序,它使用下一个Java代码进行加密: publicKeyBytes = Base64.decode(encodedPublicKey, Base64.URL_SAFE); KeyFactory factoryKey = KeyFactory.getInstance("RSA"); X509EncodedKeySpec encodedKey = new X509EncodedKeySpec(publicKeyBytes); Publ

我有一个用颤振编写的移动android应用程序,它使用下一个Java代码进行加密:

publicKeyBytes = Base64.decode(encodedPublicKey, Base64.URL_SAFE);
KeyFactory factoryKey = KeyFactory.getInstance("RSA");
X509EncodedKeySpec encodedKey = new X509EncodedKeySpec(publicKeyBytes);
PublicKey keyPublic = factoryKey.generatePublic(encodedKey);
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPPadding");
OAEPParameterSpec paramSpec = new OAEPParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT);
cipher.init(1, keyPublic, paramSpec);
byte[] abData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
return Base64.encodeToString(abData, Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING);

但现在我需要使这段代码跨平台(iOS、Web)。因此,我正在研究如何将此代码移动到Dart。我试图使用library
pointycastle
,但据我所知,他们并不完全支持这种算法。现在甚至可以用Dart实现它吗?

Pointycastle支持带有OAEP填充的RSA。你觉得缺少什么?请看:当我查看pointcastle时,我发现了这个问题,并假设我有相同的案例。我不清楚如何翻译这个部分
X509EncodedKeySpec encodedKey=newx509encodedkeyspec(publicKeyBytes)
要将我的公钥用于PointCastle,X509包应该会有所帮助。