全部产品
Search
文档中心

Object Storage Service:Keamanan data (iOS SDK)

更新时间:Nov 30, 2025

Object Storage Service (OSS) SDK untuk iOS menyediakan pemeriksaan integritas data guna memastikan keamanan data selama proses pengunggahan dan pengunduhan.

Pemeriksaan integritas data dalam pengunggahan

Karena kompleksitas jaringan seluler, kesalahan dapat terjadi saat data ditransfer antara klien dan server. OSS menyediakan pemeriksaan integritas data ujung ke ujung berdasarkan algoritma MD5 dan CRC-64.

  • Verifikasi MD5

    Jika Anda menentukan header Content-MD5 dalam permintaan saat mengunggah objek, OSS akan melakukan verifikasi MD5 pada objek tersebut untuk memastikan integritas datanya. Objek hanya akan diunggah jika hash MD5 dari objek yang diterima sesuai dengan nilai Content-MD5 yang ditentukan dalam permintaan.

    OSSPutObjectRequest * put = [OSSPutObjectRequest new];
    // Tentukan nama bucket. Contoh: examplebucket.
    put.bucketName = @"examplebucket";
    // Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap.
    put.objectKey = @"exampledir/exampleobject.txt";
    put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
    // put.uploadingData = <NSData *>; // Unggah NSData secara langsung.
    // Tentukan Content-MD5.
    put.contentMd5 = [OSSUtil base64Md5ForFilePath:@"<filePath>"];
    OSSTask * putTask = [client putObject:put];
    [putTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"unggah objek berhasil!");
        } else {
            NSLog(@"unggah objek gagal, error: %@" , task.error);
        }
        return nil;
    }];
    // waitUntilFinished memblokir eksekusi thread saat ini tetapi tidak memblokir kemajuan tugas.
    // [putTask waitUntilFinished];     
  • Verifikasi CRC

    Nilai CRC 64-bit dari sebuah objek dapat dihitung selama proses pengunggahan. Kode contoh berikut menunjukkan cara melakukan verifikasi CRC saat mengunggah objek:

    OSSPutObjectRequest * put = [OSSPutObjectRequest new];
    // Tentukan nama bucket. Contoh: examplebucket.
    put.bucketName = @"examplebucket";
    // Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap.
    put.objectKey = @"exampledir/exampleobject.txt";
    put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
    // put.uploadingData = <NSData *>; // Unggah NSData secara langsung.
    // Aktifkan verifikasi CRC.
    put.crcFlag = OSSRequestCRCOpen;
    OSSTask * putTask = [client putObject:put];
    [putTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"unggah objek berhasil!");
        } else {
            NSLog(@"unggah objek gagal, error: %@" , task.error);
        }
        return nil;
    }];
    // waitUntilFinished memblokir eksekusi thread saat ini tetapi tidak memblokir kemajuan tugas.
    // [putTask waitUntilFinished];

Pemeriksaan integritas data dalam pengunduhan

OSS SDK untuk iOS menyediakan pemeriksaan integritas data ujung ke ujung berdasarkan nilai CRC 64-bit selama proses pengunduhan.

Jika verifikasi CRC diaktifkan, OSS secara otomatis memeriksa integritas data setelah membaca data dari aliran.

Kode contoh berikut menunjukkan cara mengaktifkan verifikasi CRC dalam pengunduhan:

OSSGetObjectRequest * request = [OSSGetObjectRequest new];
request.bucketName = @"examplebucket";
request.objectKey = @"exampledir/exampleobject.txt";
// Tentukan jalur lokal tempat objek akan diunduh.
request.downloadToFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// Aktifkan verifikasi CRC.
request.crcFlag = OSSRequestCRCOpen;
OSSTask * task = [client getObject:request];
[task continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"unduh objek berhasil!");
    } else {
        NSLog(@"unduh objek gagal, error: %@" ,task.error);
    }
    return nil;
}];
// [task waitUntilFinished];

Jika blok onReceiveData disetel, Anda harus memeriksa apakah nilai CRC sama.

OSSGetObjectRequest * request = [OSSGetObjectRequest new];
request.bucketName = @"examplebucket";
request.objectKey = @"exampledir/exampleobject.txt";
// Tentukan jalur lokal tempat objek akan diunduh.
request.downloadToFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// Aktifkan verifikasi CRC.
request.crcFlag = OSSRequestCRCOpen;
__block uint64_t localCrc64 = 0;
NSMutableData *receivedData = [NSMutableData data];
request.onRecieveData = ^(NSData *data) {
    if (data)
    {
        NSMutableData *mutableData = [data mutableCopy];
        void *bytes = mutableData.mutableBytes;
        localCrc64 = [OSSUtil crc64ecma:localCrc64 buffer:bytes length:data.length];
        [receivedData appendData:data];
    }
};
__block uint64_t remoteCrc64 = 0;
OSSTask * task = [client getObject:request];
[task continueWithBlock:^id(OSSTask *task) {
    OSSGetObjectResult *result = task.result;
    if (result.remoteCRC64ecma)
    {
        NSScanner *scanner = [NSScanner scannerWithString:result.remoteCRC64ecma];
        [scanner scanUnsignedLongLong:&remoteCrc64];
        if (remoteCrc64 == localCrc64)
        {
            NSLog(@"Verifikasi CRC-64 berhasil!");
        }
        else
        {
            NSLog(@"Verifikasi CRC-64 gagal!!");
        }
   }
   return nil;
}];
// waitUntilFinished memblokir eksekusi thread saat ini tetapi tidak memblokir kemajuan tugas.
// [task waitUntilFinished];