Browse Source

add fromHex for ios

Denmaseno 6 năm trước cách đây
mục cha
commit
9ea2a513a9
1 tập tin đã thay đổi với 19 bổ sung2 xóa
  1. 19 2
      ios/RCTPBKDF2/lib/PBKDF2.m

+ 19 - 2
ios/RCTPBKDF2/lib/PBKDF2.m

@@ -13,10 +13,27 @@
     return hexStr;
 }
 
++ (NSMutableData *) fromHex:(NSString *)str {
+    const char *chars = [str UTF8String];
+    int i = 0, len = str.length;
+
+    NSMutableData *data = [NSMutableData dataWithCapacity:len / 2];
+    char byteChars[3] = {'\0','\0','\0'};
+    unsigned long wholeByte;
+
+    while (i < len) {
+        byteChars[0] = chars[i++];
+        byteChars[1] = chars[i++];
+        wholeByte = strtoul(byteChars, NULL, 16);
+        [data appendBytes:&wholeByte length:1];
+    }
+    return data;
+}
+
 + (NSString *) derivationKey:(NSString *)password salt: (NSString *)salt iterations: (nonnull int *)iterations {
     // Data of String to generate Hash key(hexa decimal string).
-    NSData *passwordData = [password dataUsingEncoding:NSUTF8StringEncoding];
-    NSData *saltData = [salt dataUsingEncoding:NSUTF8StringEncoding];
+    NSData *passwordData = [self fromHex:password];
+    NSData *saltData = [self fromHex:salt];
 
     // Hash key (hexa decimal) string data length.
     NSMutableData *hashKeyData = [NSMutableData dataWithLength:CC_SHA512_DIGEST_LENGTH];