2017-02-24 57 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"