【发布时间】:2020-05-13 08:52:26
【问题描述】:
我正在尝试在swift 中实现与我在 java 中的代码等效的代码。基本上是带有GCM 填充的AES 实现,我为此使用了密钥派生。在swift 中,我使用的是CryptoSwift 库。
我的问题是我无法在swift 中获得相同的加密文本。
经过很长时间的研究,我找不到任何解决我的问题的方法,我什至看到了CryptoSwift 库存储库的测试代码以获得任何想法,但没有运气
这是我的java代码:
GCMParameterSpec ivParameterSpec = new GCMParameterSpec(128, "ivVector".getBytes());
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec keySpec = new PBEKeySpec("myPassword".toCharArray(), "salt".getBytes(), 1000, 256);
SecretKey tmp = secretKeyFactory.generateSecret(keySpec);
key = new SecretKeySpec(tmp.getEncoded(), "AES");
encryptCipher = Cipher.getInstance("AES/GCM/NoPadding");
encryptCipher.init(Cipher.ENCRYPT_MODE, key, ivParameterSpec);
byte[] encryptedWord = Base64.encode(encryptCipher.doFinal("example".getBytes("UTF-8")));
这是我的快速代码:
do{
keyDerivation = try PKCS5.PBKDF2(password: "myPassword".bytes, salt: "salt".bytes, iterations: 1000, keyLength: 32, variant: .sha1).calculate()
let gcm = GCM(iv: keyDerivation, mode: .combined)
let aes = try AES(key: keyDerivation, blockMode: gcm, padding: .noPadding)
let encryptedText = try aes.encrypt("example".bytes)
}catch{
print(error)
}
任何帮助将不胜感激。
【问题讨论】:
标签: java swift cryptography aes-gcm cryptoswift