由于公司要用到rsa加密,所以要刷一个rsa工具.在网上搜索,发现很多人是用native实现的.这个太笨重了,不仅仅android ,ios各自维护一份,而且还有打包的版本问题.于是我就开始折腾去找官方的加密库.然后发现rsa加密是需要用到pem文件做钥匙的.写死了.无语的一批.这样就不能动态用字符串做钥匙来加密解密.但是我看了源码后,发现还是有救的,通过拼接pem文件协议开始结束部分到钥匙上面,然后进行api调用.完美解决.工具类如下.
依赖库:
encrypt: ^3.2.0
//解密工具
class EncryptUtil {
//公钥
static const _publicKeyString = "";
//密钥
static const _privateKeyString = "";
static Future<String> rsaEncode (String base64PlainText, {String publicKey=_publicKeyString}) async{
var parser = RSAKeyParser();
String rsaPublic = "-----BEGIN PUBLIC KEY-----\n$publicKey\n-----END PUBLIC KEY-----";
RSAPublicKey rsaPublicKey = parser.parse(rsaPublic);
// String rsaTxt = await crypto.DYFCryptoProvider.rsaEncrypt(plainText, key);
return Encrypter(RSA(publicKey: rsaPublicKey)).encrypt(base64PlainText).base64;
}
//base64PlainText base64处理的密文
static Future<String> rsaDecode (String base64PlainText, {String privateKey=_privateKeyString}) async{
var parser = RSAKeyParser();
String rsaPublic = "-----BEGIN PRIVATE KEY-----\n$privateKey\n-----END PRIVATE KEY-----";
RSAPrivateKey rsaPrivateKey = parser.parse(rsaPublic);
// String rsaTxt = await crypto.DYFCryptoProvider.rsaEncrypt(plainText, key);
return Encrypter(RSA(privateKey: rsaPrivateKey)).decrypt64(base64PlainText);
}
static String urlEncode(String component){
return Uri.encodeComponent(component);
}
static String urlDecode(String component){
return Uri.decodeComponent(component);
}
}