:
Imports System.Security.Cryptography
' ....
Dim sensitiveDataBytes() As Byte = Encoding.Unicode.GetBytes(sensitiveData)
Dim entropy As Byte() = Guid.NewGuid().ToByteArray()
Dim encryptedSensitiveDataBytes() As Byte = ProtectedData.Protect(sensitiveDataBytes, entropy, DataProtectionScope.LocalMachine)
Dim entropyPlusSensitiveData As Byte() = entropy.Concat(encryptedSensitiveDataBytes).ToArray()
Return entropyPlusSensitiveData
あなたがここに何をやっているあなたがSystem.Security.Cryptography.ProtectedData
を使用しているありますDPAPIを使用して "ローカルマシン"のスコープでデータを保護し、次にランダムな16バイトのエントロピーを作成して、暗号化されたデータの前に追加します。その後、16+(暗号化されたデータの長さ)サイズの配列を安全に渡すことができます。復号側では
あなたは同様のトリックを行う:あなたは16のエントロピーバイトを取り除き、あなたがして復号化するためにDPAPIを使用します。
Dim entropyPlusSensitiveData As Byte() = data ' the byte array created previously
Dim entropy() As Byte = entropyPlusSensitiveData.Take(16).ToArray()
Dim encryptedSensitiveDataBytes() As Byte = entropyPlusSensitiveData.Skip(16).ToArray()
Dim sensitiveDataBytes() As Byte = ProtectedData.Unprotect(encryptedSensitiveDataBytes, entropy, DataProtectionScope.LocalMachine)
エントロピーは必須ではありませんが、それは非常にお勧めします。