Android 和 iPhone 中使用 AES-128 加密(不同结果)

iosAndroidiphone

1个回答

写回答

边伯贤82#!#

2025-06-27 19:10

+ 关注

Android
Android

Androidiphone 是目前市场上最流行的两种移动操作系统,它们各自拥有着大量的用户群体。在移动应用程序开发中,数据的安全性是一个非常重要的方面。为了保护用户的隐私和敏感信息,开发人员通常会使用加密算法来对数据进行加密。其中,AES-128 是一种常用的加密算法,下面将分别介绍在 Androidiphone 中使用 AES-128 加密的方法,并提供相应的案例代码。

Android 中使用 AES-128 加密

Android 平台上使用 AES-128 加密可以通过 Java 的标准库实现。首先,需要引入相关的包:

Java

import Javax.crypto.Cipher;

import Javax.crypto.spec.SecretKeySpec;

import Android.util.Base64;

接下来,我们可以定义一个方法来实现 AES-128 加密:

Java

public String encrypt(String key, String data) throws Exception {

SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

byte[] encryptedBytes = cipher.doFinal(data.getBytes("UTF-8"));

return Base64.encodeToString(encryptedBytes, Base64.DEFAULT);

}

以上代码中的 key 参数为加密密钥,data 参数为待加密的数据。加密结果将以 Base64 编码的形式返回。

iphone 中使用 AES-128 加密

iphone 平台上使用 AES-128 加密可以通过 Objective-C 或 Swift 语言实现。下面分别介绍这两种方法。

Objective-C:

objective-c

#import <CommonCrypto/CommonCrypto.h>

- (NSString *)encryptWithKey:(NSString *)key data:(NSString *)data {

NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];

NSData *dataToEncrypt = [data dataUsingEncoding:NSUTF8StringEncoding];

uint8_t iv[kCCBlockSizeAES128];

memset((void *)iv, 0x0, (size_t)sizeof(iv));

size_t bufferSize = data.length + kCCBlockSizeAES128;

void *buffer = malloc(bufferSize);

size_t numBytesEncrypted = 0;

CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,

kCCALGorithmAES128,

kCCOptionPKCS7Padding,

keyData.bytes,

keyData.length,

iv,

dataToEncrypt.bytes,

dataToEncrypt.length,

buffer,

bufferSize,

&numBytesEncrypted);

if (cryptStatus == kCCSuccess) {

NSData *encryptedData = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];

return [encryptedData base64EncodedStringWithOptions:NSDatabase64Encoding64CharacterLineLength];

}

free(buffer);

return nil;

}

Swift

Swift

import CommonCrypto

func encrypt(key: String, data: String) -> String? {

guard let keyData = key.data(using: .utf8),

let dataToEncrypt = data.data(using: .utf8) else {

return nil

}

let iv:[UInt8] = Array(repeating: 0x0, count: kCCBlockSizeAES128)

let bufferSize = data.count + kCCBlockSizeAES128

var buffer = [UInt8](repeating: 0, count: bufferSize)

var numBytesEncrypted = 0

let cryptStatus = CCCrypt(CCOperation(kCCEncrypt),

CCALGorithm(kCCALGorithmAES128),

CCOptions(kCCOptionPKCS7Padding),

(keyData as NSData).bytes,

keyData.count,

iv,

(dataToEncrypt as NSData).bytes,

dataToEncrypt.count,

&buffer,

bufferSize,

&numBytesEncrypted)

if cryptStatus == kCCSuccess {

let encryptedData = Data(bytes: buffer, count: numBytesEncrypted)

return encryptedData.base64EncodedString(options: .lineLength64Characters)

}

return nil

}

以上代码中的 key 参数为加密密钥,data 参数为待加密的数据。加密结果将以 Base64 编码的形式返回。

本文分别介绍了在 Androidiphone 中使用 AES-128 加密的方法,并提供了相应的案例代码。通过对用户的敏感信息进行加密处理,可以提高数据的安全性,保护用户的隐私。在实际的移动应用程序开发中,开发人员可以根据具体的需求选择适合的加密算法和参数,以确保数据的机密性和完整性。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号