我正在开发应用程序,现在完成android版本后,我已经使用swift 5启动了ios版本。 我在android版本中使用的功能是用Java编写的,然后使用aes-256-cbc算法对纯文本进行加密/解密。
private static byte[] array_concat(final byte[] a, final byte[] b){
final byte[] c = new byte[a.length + b.length];
System.arraycopy(a, 0, c, 0, a.length);
System.arraycopy(b, 0, c, a.length, b.length);
return c;
}
private static String SECRET = "abcdefghijuklmno0123456789012346";
static String encrypt(String myOwnSalt) throws Exception {
final byte[] pass = SECRET.getBytes(StandardCharsets.UTF_8);
final byte[] salt = (new SecureRandom()).generateSeed(8);
final byte[] inBytes = myOwnSalt.getBytes(StandardCharsets.UTF_8);
final byte[] passAndSalt = array_concat(pass, salt);
byte[] hash = new byte[0];
byte[] keyAndIv = new byte[0];
for (int i = 0; i < 3 && keyAndIv.length < 48; i++) {
final byte[] hashData = array_concat(hash, passAndSalt);
final MessageDigest md = MessageDigest.getInstance("MD5");
hash = md.digest(hashData);
keyAndIv = array_concat(keyAndIv, hash);
}
final byte[] keyValue = Arrays.copyOfRange(keyAndIv, 0, 32);
final byte[] iv = Arrays.copyOfRange(keyAndIv, 32, 48);
final SecretKeySpec key = new SecretKeySpec(keyValue, "AES");
final Cipher cipher =
Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
byte[] data = cipher.doFinal(inBytes);
data = array_concat(array_concat("Salted__".getBytes(StandardCharsets.UTF_8), salt), data);
return Base64.encode(data);
}
我真的需要帮助才能在Swift中完成同样的事情。