アプリの Android バージョンと iOS バージョンの両方を作成しており、暗号化する必要があるデータがあります。互換性があると主張されているため、Android と iOS 用の JNCryptor/RNCryptor ライブラリをそれぞれ使用しています。
ただし、Android で暗号化すると、暗号化されたキーの長さは 114 文字になりますが、iOS では 112 文字になります。私が気付いた 2 つのライブラリ ソース コードの唯一の違いは、Android が PKCS5Padding を使用するのに対し、iOS は PKCS7Padding を使用することです。2 つのライブラリが明らかに互換性があると考えられていることを考えると、これは重要なことですか? もしそうなら、これを変更して2つの暗号化された文字列を同じ長さにするにはどうすればよいですか?
編集: Android コード:
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];
それとも、2 つのライブラリを比較するつもりでしたか? これらはここから入手できます: https://github.com/RNCryptor/JNCryptor