In meiner Android App habe ich eine Hash-Zeichenfolge, die ich mit einer regulären Zeichenfolge aus einem Editiertext vergleichen möchte. Ich mache das mit den folgendenIos swift SHA1 Verschlüsselung
try {
MessageDigest hashDigester = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return (new BigInteger(1, hashDigester.digest(pin.getBytes())).toString(16)).equals(object.getPin());
Der obige Code funktioniert gut. Jetzt bin Tring ich das gleiche in ios zu tun mit schnellen 3,0 Ich habe versucht Cryptoswift mit dem Hash aus der EditText zu schaffen, wie dies
text.sha1()
und ich habe auch versucht, die Verwendung von unter
extension Data {
func hexString() -> String {
let string = self.map{String(format:"%02x", Int($0))}.joined()
return string
}
func SHA1() -> Data {
var result = Data(count: Int(CC_SHA1_DIGEST_LENGTH))
_ = result.withUnsafeMutableBytes {resultPtr in
self.withUnsafeBytes {(bytes: UnsafePointer<UInt16>) in
CC_SHA1(bytes, CC_LONG(count), resultPtr)
}
}
return result
}
}
extension String {
func hexString() -> String {
return self.data(using: .utf8)!.hexString()
}
func SHA1() -> String {
return self.data(using: .utf8)!.SHA1().hexString()
}
}
Beide gaben mir das gleiche ergebnis, aber nicht dasselbe mit meinem android code. Haben Sie Vorschläge, wie sollte ich meinen Swift-Code anpassen?
Können Sie ein Beispiel für eine Zeichenfolge, die Sie durchgeführt sha-1 auf, mit der Ergebnisse auf Android sowie auf iOS (dieser Code)? – paulvs
wenn ich 407 in ios einfügen gibt es mir 35db01d3926745bec110d5709a544e250f7fffc4, während in android für die gleichen 407 e6de89674d9f1d7968a70dad4f41b844965b4fdc zurückgegeben, die die richtige ist – appLogic