2016-05-13 14 views
1

問題解読:ベストな方法を暗号化するために使用された場合/

私は多くのデータを暗号化/復号化する必要があります。このデータは、パスワード(より具体的にはRNCrytor libを使用)を使用して暗号化/復号化されます。このパスワードを変更できる必要があります。

私の質問は、これがどのように最も効率的に行われるのかです。

私ではないので、最適なソリューション:

すべてのデータをループし、それを復号化以外のより良い方法があるに違いありません。新しいパスワードを使用して再度暗号化します。

答えて

5

これは、間接的なレイヤーを追加することによって解決される多くの問題の1つです。ランダムなキーを生成し、そのキーを使用してデータを暗号化し、そのキーをパスワードから派生したキーで暗号化されたファイル(またはデータベース列など)に格納します。以下のような

何か(用心、私はスウィフトを知らない):

// Generation of the data keys 
let dek = RNCryptor.randomDataOfLength(RNCryptor.FormatV3.keySize) 
let dak = RNCryptor.randomDataOfLength(RNCryptor.FormatV3.keySize) 

// Use these to work on the data 
let encryptor = RNCryptor.EncryptorV3(encryptionKey: dek, hmacKey: dak) 
let decryptor = RNCryptor.DecryptorV3(encryptionKey: dek, hmacKey: dak) 

// Save the data keys encrypted with the password 
let dek_file = RNCryptor.encryptData(dek, password: password) 
let dak_file = RNCryptor.encryptData(dek, password: password) 
// Store both dek_file and dak_file somewhere 

// Next time, load dek_file and dak_file from where you stored them 
let dek = RNCryptor.decryptData(dek_file, password: password) 
let dak = RNCryptor.decryptData(dek_file, password: password) 
+0

これはいっそ – Mat0

+0

:)はるかに優れたおかげで、自分でこれをしない:使用GPGまたはその他の十分にテストソリューションを。 –

関連する問題