[英]Encryption Decryption AES/ECB/NoPadding
遵循此算法,iOS中是否有任何方法可以解密/解密字符串? 我所知道的所有在java中的此类:javax.crypto.Cipher用于此目的
Apple Common Crypto确实支持AES,ECB模式(使用CBC模式)并且没有填充。 如果不使用填充,则输入数据长度必须是AES块大小的精确倍数(16字节),标准填充为PKCS#7 (néePKCS#5)。
使用支持安全加密的解决方案(例如支持多种语言和平台的RNCryptor)会更好。
仅使用加密不能提供安全性,它必须与其他加密原语一起正确使用。
苹果的Common Crpto确实支持它。 您需要导入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加密
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.