0
Swiftのユーザーパスワードからデータを生成する必要があります。私は現在、使用しています:文字列からデータを生成する方法
let password = "replace_it_for_smt_related_to_the_user"
var securityKey:Data! = Data()
securityKey = self.password.data(using: .utf16, allowLossyConversion: true)?.subdata(in: 0...32)
しかし、その後、ライブラリでそれを使用して、私はエラーを取得する:「securityKeyは256ビットでなければなりません」。 私は実際にエンコーディングタイプを気にしませんが、私は256ビットの文字列からDataを作成する必要があります。どんな助け?延長の
おかげ
256ビットが '8分の256 = 32 bytes'に等しいです。 ASCIIエンコーディング(1文字あたり1バイト)を使用する場合、文字列は32文字のASCII文字でなければなりません。 'UTF-8'エンコーディングを使用すると、1バイトから4バイトの任意の文字が使用できます。したがって、正しい長さの 'Data'を作成するためにパスワードが何であるかによって異なります。このケースでは、ハッシュして「データ」に変換したときのパスワードが正しい長さになるように、パスワードを32バイトの固定サイズにハッシュする必要があります。 [128ビットMD5ハッシュは16進数で表現すると32ビットのハッシュを生成します](https://stackoverflow.com/a/6317289/1305067)。 – paulvs
'サブデータ(in:0 ... 32)'は** 33 **バイト= 264ビットを抽出します。おそらく 'サブデータ(in:0 .. <32)'を意味していたでしょうか? –
@ MartinRそれはおそらく一つの問題でした。私は以下の答えで解決しましたが、とにかく感謝します。 –