Есть ли какой-либо метод дешифрования/дешифрования строки в iOS по этому алгоритму? все, что я знаю, что в java этот класс: javax.crypto.Cipher используется для этой цели
Шифрование Дешифрование AES/ECB/NoPadding
Ответы (2)
Apple Common Crypto поддерживает AES, режим ECB (используйте режим CBC) и отсутствие заполнения. Если вы не используете заполнение, длина входных данных должна быть кратна размеру блока AES (16 байт), стандартное заполнение равно PKCS#7 (урожденная PKCS#5).
Лучше использовать решение, поддерживающее безопасное шифрование, например RNCryptor, которое поддерживает несколько языков и платформ.
Простое использование шифрования не обеспечивает безопасности, его необходимо правильно использовать в сочетании с другими криптографическими примитивами.
Common Crpto от Apple поддерживает его. Импортируйте CommonCryptor.h и CCCryptorStatus «CCCrypt» — это то, что вам нужно.
Вот пример:
+ (NSData *)encryptDataWithAESECB:(NSData *)data
key:(NSData *) key
error:(NSError **)error {
size_t outLength;
int cipherLen = (int)(data.length/kAlgorithmBlockSize + 1)*kAlgorithmBlockSize;
NSMutableData *cipherData = [NSMutableData dataWithLength:cipherLen];
NSData *newData = [self addPaddingBeforeEncryptWithAESECB:data];
CCCryptorStatus result = CCCrypt(kCCEncrypt, // operation
kAlgorithm, // Algorithm
kCCOptionECBMode, // Mode
key.bytes, // key
key.length, // keylength
0,// iv
newData.bytes, // dataIn
newData.length, // dataInLength,
cipherData.mutableBytes, // dataOut
cipherData.length, // dataOutAvailable
&outLength); // dataOutMoved
if (result == kCCSuccess) {
cipherData.length = outLength;
}else {
if (error) {
*error = [NSError errorWithDomain:kRNCryptManagerErrorDomain code:result userInfo:nil];
}
return nil;
}
return cipherData;
}
Пожалуйста, обратитесь к моему сообщению здесь для получения дополнительной информации: AES ECB iOS Encrypt