2017-08-22 1 views
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

+0

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

+0

'subdata (in: 0 ... 32)' extrahiert ** 33 ** Bytes = 264 Bits. Vielleicht meintest du 'subdata (in: 0 .. <32)'? –

+0

@MartinR das war wohl ein Problem. Ich habe mit der Antwort unten gelöst, danke aber trotzdem. –

Antwort

1

Nutzen Sie die Erweiterung:

extension String{ 
//convert base64 string to string 
    func decodeToBase64() -> String { 
    return Data(self.utf8).base64EncodedString() 
    } 

//convert string to base64 String 
func encodeFromBase64() -> String? { 
    guard let data = Data(base64Encoded: self) else { 
     return nil 
    } 
    return String(data: data, encoding: .utf8) 
    } 

} 

Wie man es verwendet:

let pwdStr = "replace_it_for_smt_related_to_the_user".decodeToBase64()//use extension method 
print(pwdStr) 
Verwandte Themen