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 - 密钥:
1011111101010100100110100001001(decbin(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),可以实现高效的数据加密与解密功能。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年06月16日 13时27分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP学习总结(9)——PHP入门篇之WAMPServer服务控制面板介绍
2023-03-01
php学习笔记---php调试和开发工具整理
2023-03-01
PHP学习笔记一:谁动了你的mail(),PHP?
2023-03-01
PHP安全实战
2023-03-01
php安装扩展
2023-03-01
php实战第二十二天
2023-03-01
rabbitmq重启
2023-03-01
php实现上传(多个)文件函数封装
2023-03-01
php实现下载文件方法
2023-03-01
php实现单链表
2023-03-01
php实现图片背景换色功能
2023-03-01
php实现多个一维数组对应合并成二维数组
2023-03-01
php实现多关键字查找方法
2023-03-01
PHP实现微信公众号H5支付
2023-03-01
PHP实现微信公众号网页授权
2023-03-01
PHP实现微信小程序推送消息至公众号
2023-03-01
rabbitmq逻辑与开发
2023-03-01
php实现根据身份证获取年龄
2023-03-01
PHP实现的MongoDB数据增删改查
2023-03-01
PHP实现的SSO单点登录系统,拿走就用吧
2023-03-01