0
Ich muss Daten von einem Benutzerkennwort in Swift generieren. Ich bin derzeit mit:So generieren Sie Daten aus String
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)
Aber dann, es mit einer Bibliothek, erhalte ich die Fehlermeldung: „SecurityKey muss 256 Bits sein“. Ich interessiere mich nicht wirklich für den Kodierungstyp, aber ich muss Daten von einer Schnur schaffen, die 256 Bits ist. Irgendeine Hilfe?
Dank
256 Bits auf '256/8 = 32 bytes' gleich. Bei Verwendung der ASCII-Codierung (1 Byte pro Zeichen) muss Ihre Zeichenfolge 32 ASCII-Zeichen lang sein. Bei Verwendung der UTF-8-Kodierung kann ein Zeichen zwischen 1 und 4 Byte lang sein. Es hängt also davon ab, wie das Passwort ist, um die richtige Länge 'Data' zu erzeugen. In diesem Fall ist es wahrscheinlich, dass Sie Ihr Passwort auf eine feste Größe von 32 Bytes hashen müssen. Auf diese Weise wird jedes Passwort, das in "Data" umgewandelt und in Hash umgewandelt wird, die richtige Länge haben. [128-Bit-MD5-Hashing erzeugt einen Hash von 32 Bits, wenn er als hexadezimal dargestellt wird] (https://stackoverflow.com/a/6317289/1305067). – paulvs
'subdata (in: 0 ... 32)' extrahiert ** 33 ** Bytes = 264 Bits. Vielleicht meintest du 'subdata (in: 0 .. <32)'? –
@MartinR das war wohl ein Problem. Ich habe mit der Antwort unten gelöst, danke aber trotzdem. –