encryptByPrivateKey function
Uint8List
encryptByPrivateKey(
- Uint8List data,
- RSAPublicKey publicKey,
- RSAPrivateKey privateKey
)
Implementation
Uint8List encryptByPrivateKey(
Uint8List data, RSAPublicKey publicKey, RSAPrivateKey privateKey) {
try {
var keyParameter = () => PrivateKeyParameter<RSAPrivateKey>(privateKey);
AsymmetricBlockCipher cipher = AsymmetricBlockCipher("RSA/PKCS1");
cipher.reset();
cipher.init(true, keyParameter());
int index = 0;
int strlength = data.length;
final keysize = publicKey.modulus!.bitLength ~/ 8 - 11;
final blocksize = publicKey.modulus!.bitLength ~/ 8;
final numBlocks =
(strlength ~/ keysize) + ((strlength % keysize != 0) ? 1 : 0);
Uint8List list = Uint8List(blocksize * numBlocks);
int count = 0;
while (index < strlength) {
Uint8List listtmp;
if (index + keysize > strlength) {
listtmp = data.sublist(index, strlength);
index = strlength;
} else {
listtmp = data.sublist(index, index + keysize);
index += keysize;
}
Uint8List encryptResult = cipher.process(listtmp);
for (int v_i = 0; v_i < blocksize; v_i++) {
list[count * blocksize + v_i] = encryptResult[v_i];
}
count += 1;
}
return list;
} catch (e) {
print(e.toString());
rethrow;
}
}