2017-02-24 1 views
0

사용 가능 여부 또는 데이터를 암호화하고 S3 버켓에 업로드하기 위해 자체 알고리즘을 선택해야합니까? 다중 플랫폼 (android/C#/ios)에서 데이터를 암호화하고 서버 측에 저장해야하는 애플리케이션을 생성해야한다는 요구 사항이 있습니다. . .iOS AWS SDK에서 클라이언트 측 암호화를 수행하는 방법은 무엇입니까?

데이터를 암호화하기 위해 this 라이브러리를 사용해 보았지만, iOS 측에서는 다른 것보다 다른 결과를 나타냅니다. . .

답변

0

아래 코드를 사용하여 클라이언트 측 암호화가 포함 된 aws s3 버킷에 비디오를 업로드했습니다. aws에서 콘텐츠를 업로드 할 때 AES256 키와 md5 키가 필요합니다. 먼저, 광고 모음 CryptoSwift을 추가하십시오.

이제 아래 코드에서 AES256 & md5 키를 생성하십시오.

let input: Array<UInt8> = [0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9] 

    let key: Array<UInt8> = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00] 

    let iv: Array<UInt8> = AES.randomIV(AES.blockSize) 

    do { 
     let encrypted = try AES(key: key, iv: iv, blockMode: .CBC, padding: PKCS7()).encrypt(input) 
     let base64String: String = encrypted.toBase64()! 
     let md5Data = encrypted.md5() 
     let md5DataBase64 = md5Data.toBase64() 
     print("Encrypted:\(encrypted),\n Base64String:\(base64String)") 
     print("md5:\(md5Data),\n md5String:\(md5DataBase64)") 

    } catch { 
     print(error) 
    } 

이제 aws의 업로드 요청에 다음 두 줄을 추가하십시오.

uploadRequest?.sseCustomerKey = "Your base64 string of AES 256 key" uploadRequest?.sseCustomerKeyMD5 = "Your base64 string of md5"

관련 문제