php openssl aes ecb,php openssl_encrypt AES-128-ECB iOS
发布日期:2025-05-02 05:47:42 浏览次数:8 分类:精选文章

本文共 3218 字,大约阅读时间需要 10 分钟。

AES加密与解密实现

本文将介绍如何在PHP和Objective-C中实现AES加密与解密功能,并结合具体案例进行验证。

PHP实现

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/GLIj0EL2Q20r7tcICMwZ9rRigwjAqhaSNJs7EcMYuKxNE1JT
  • 密钥1011111101010100100110100001001decbin(1604996361)转换结果)
注意事项
  • IV为空:在AES-128-ECB模式中,初始向量(IV)通常为空字符串。
  • 密钥长度:PHP中的AES-128-ECB需要128位密钥,decbin(1604996361)返回的二进制字符串长度为128位。

Objective-C实现

#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];}
主函数main
int 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),可以实现高效的数据加密与解密功能。

上一篇:php paypal rest api,PayPal REST API指定网络配置文件PHP
下一篇:php odbc驱动,php常用ODBC函数集(详细)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2026年06月16日 13时27分04秒