本文共 3271 字,大约阅读时间需要 10 分钟。
本文将介绍如何在PHP和Objective-C中实现AES加密与解密功能,并结合具体案例进行验证。
function aesEncrypt() { $data = openssl_encrypt('5ddbf06d-adfd-10f4-de2b-f39b13e8eb8d_1604996361', 'AES-128-ECB', decbin(1604996361)); echo 'encrypt='.$data.PHP_EOL; return $data;}function aesDecrypt($secretData) { $data = openssl_decrypt($secretData, 'AES-128-ECB', decbin(1604996361)); $arrU = explode('_', $data); $uuid = $arrU[0]; echo 'decrypt='.$data.PHP_EOL; echo 'decrypt11111='.$uuid.PHP_EOL;} aesEncrypt:使用PHP的openssl_encrypt函数进行AES-128-ECB加密。参数包括明文、加密算法和初始向量(IV)。aesDecrypt:使用openssl_decrypt进行解密,同样使用相同的密钥和IV。解密后,通过explode函数将密文拆分,提取唯一标识符(UUID)。aZkNWORB4zD095e/GLIj0EL2Q20r7tcICMwZ9rRigwjAqhaSNJs7EcMYuKxNE1JT1011111101010100100110100001001(decbin(1604996361)转换结果)decbin(1604996361)返回的二进制字符串长度为128位。#import#import NSString const *kInitVector = @"";size_t const kKeySize = kCCKeySizeAES128;NSData *cipherOperation(NSData *contentData, NSData *keyData, CCOperation operation) { size_t dataLength = contentData.length; void const *initVectorBytes = [kInitVector dataUsingEncoding:NSUTF8StringEncoding].bytes; void const *contentBytes = contentData.bytes; void const *keyBytes = keyData.bytes; size_t operationSize = dataLength + kCCBlockSizeAES128; void *operationBytes = malloc(operationSize); if (operationBytes == NULL) { return nil; } CCCryptorStatus cryptStatus = CCCrypt(operation, kCCAlgorithmAES, kCCOptionECBMode | kCCOptionPKCS7Padding, keyBytes, kKeySize, initVectorBytes, contentBytes, dataLength, operationBytes, operationSize, &actualOutSize); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:operationBytes length:actualOutSize]; } free(operationBytes); operationBytes = NULL; return nil;}NSString *aesEncryptString(NSString *content, NSString *key) { NSCParameterAssert(content); NSCParameterAssert(key); NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding]; NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding]; NSData *encryptedData = cipherOperation(contentData, keyData, kCCEncrypt); return [encryptedData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];}
mainint main(int argc, const char *argv[]) { @autoreleasepool { NSLog(@"---%@---", aesEncryptString(@"5ddbf06d-adfd-10f4-de2b-f39b13e8eb8d_1604996361", @"1011111101010100100110100001001")); } return 0;} 通过上述实现,可以验证加密过程是否正确。运行主函数可以看到加密后的Base64字符串:
aZkNWORB4zD095e/GLIj0EL2Q20r7tcICMwZ9rRigwjAqhaSNJs7EcMYuKxNE1JT
本文详细介绍了PHP和Objective-C中AES加密与解密的实现方法,并结合实际案例进行了验证。通过合理选择密钥和初始向量(IV),可以实现高效的数据加密与解密功能。
转载地址:http://frvfk.baihongyu.com/