我正在创建应用程序的 Android 和 iOS 版本,并且有一段需要加密的数据。我分别为 Android 和 iOS 使用 JNCryptor/RNCryptor 库,因为它们声称是兼容的。
但是,当我使用 Android 加密时,我的加密密钥长度为 114 个字符,而使用 iOS 加密的密钥长度为 112 个字符。我注意到两个库源代码之间的唯一区别是 Android 使用 PKCS5Padding 而 iOS 使用 PKCS7Padding。考虑到这两个库显然应该是兼容的,这是否重要?如果是这样,我该如何改变它以使两个加密的字符串长度相等?
编辑:安卓代码:
JNCryptor cryptor = new AES256JNCryptor();
byte[] plaintext = data.getBytes();
String password = key;
String a;
try {
byte[] ciphertext = cryptor.encryptData(plaintext, password.toCharArray());
a = Base64.encodeToString(ciphertext, Base64.DEFAULT);
return a;
} catch (CryptorException e) {
// Something went wrong
e.printStackTrace();
return "0";
}
iOS 代码:
NSData *data = [@"mystring" dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSData *encryptedData = [RNEncryptor encryptData:data
withSettings:kRNCryptorAES256Settings
password:DEV_AES_KEY
error:&error];
NSString *myotherstring = [encryptedData base64EncodedStringWithOptions:0];
或者你的意思是比较这两个库?这些可以在这里找到: https ://github.com/RNCryptor/JNCryptor