iOS JAVA互通AES加解密实现

本文介绍了如何实现在iOS、Android和JAVA之间进行AES加解密,确保移动端页面链接的安全处理。在iOS解密过程中需要注意处理解密字符串中""字符的问题,提供了解决方案和相关代码示例。
摘要由CSDN通过智能技术生成

背景:由于业务需要,对移动端页面中的链接需要做加解密处理。后端加密完成后前端(iOS、Android)解密。Android拿着key成功解密,十分钟搞定(这不简简单单~)。iOS拿着key解密,不是解密出来乱码,就是nil,半天过去了还没搞定(真的栓Q)。

下边放上经过不懈努力成功解密的代码,iOS、Android、JAVA可以互相加解密,有需要的直接复制使用。

一、iOS加解密

AESUtil.h

#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonCryptor.h>
NS_ASSUME_NONNULL_BEGIN

@interface AESUtil : NSObject

/**
 * AES加密
 */
+ (NSString *)encryptAES:(NSString *)content;
 
/**
 * AES解密
 */
+ (NSString *)decryptAES:(NSString *)content;


@end

NS_ASSUME_NONNULL_END

2、AESUtil.m

#import "AESUtil.h"

//key
static NSString *const PSW_AES_KEY = @"--32位字母数字组成的字符串--";
//偏移量
NSString *const kInitVector = @"--16位字母数字组成的字符串--";
//密钥长度
size_t const kKeySize = kCCKeySizeAES256;//kCCKeySizeAES128
@implementation AESUtil

+ (NSString *)encryptAES:(NSString *)content {
    NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding];
    NSUInteger dataLength = contentData.length;
    // 为结束符'\\0' +1
    char keyPtr[kKeySize + 1];
    memset(keyPtr, 0, sizeof(keyPtr));
    [PSW_AES_KEY getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
    // 密文长度 <= 明文长度 + BlockSize
    size_t encryptSize = dataLength + kCCBlockSizeAES128;
    void *encryptedBytes = malloc(encryptSize);
    size_t actualOutSize = 0;
    NSData *initVector 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值