iOS 端對接易寶充值接口,使用 AES-128-ECB-PKCS5Padding 加密,易寶端解密失敗。注意:非 256 位,而是 128 位。
+ (NSString *)aes128ECBPKCS5Encrypt:(NSString *)plainText key:(NSString *)key {
NSData *plainData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
// 密鑰截取/補齊 16 字節
NSMutableData *key16 = [NSMutableData dataWithLength:16];
[key16 replaceBytesInRange:NSMakeRange(0, MIN(keyData.length, 16)) withBytes:keyData.bytes];
size_t outLen;
uint8_t outBuf[plainData.length + kCCBlockSizeAES128];
CCCryptorStatus status = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS5Padding | kCCOptionECBMode,
key16.bytes, kCCKeySizeAES128, nil,
plainData.bytes, plainData.length,
outBuf, sizeof(outBuf), &outLen);
if (status == kCCSuccess) {
NSData *cipherData = [NSData dataWithBytes:outBuf length:outLen];
return [cipherData base64EncodedStringWithOptions:0]; // 或 Hex
}
return nil;
}
用在線 AES 工具(如 devglan)驗證密鑰、明文、密文三方一致,排除編碼/填充差異。