{"id":7035,"date":"2021-11-11T09:50:25","date_gmt":"2021-11-11T04:20:25","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=7035"},"modified":"2021-11-11T13:05:10","modified_gmt":"2021-11-11T07:35:10","slug":"7035-2","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/7035-2\/","title":{"rendered":"Data Encryption in Swift"},"content":{"rendered":"<p><b>Encryption <\/b><span style=\"font-weight: 400;\">&#8211; <\/span><span style=\"font-weight: 400;\">Data encryption is the process of converting plain text data into an unreadable, encoded representation. After encrypted data has been decrypted, users and processes can read and process it.\u00a0<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"> Encryption converts the data into an unusable form due to this there&#8217;s less chance of hacking and data theft.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\"> Plain text is scrambled by data encryption techniques so that only the person with the decryption key can read it.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\"> Personal Data or information that users receive, send, and save on mobile devices, is protected using the <\/span><b>Data Encryption <\/b><span style=\"font-weight: 400;\">technique.\u00a0<\/span><\/li>\n<\/ul>\n<h3><b>Types of Data Encryption\u00a0<\/b><\/h3>\n<ul>\n<li><span style=\"font-weight: 400;\"> There are 2 types of data encryption: Symmetric and Asymmetric encryption.\u00a0<\/span><\/li>\n<\/ul>\n<p><b>Symmetric Encryption- <\/b><span style=\"font-weight: 400;\">in this encryption a single, private password encrypts and decrypts data.\u00a0<\/span><\/p>\n<p><b>Asymmetric Encryption- <\/b><span style=\"font-weight: 400;\">also known as public-key encryption or public-key cryptography. In this encryption data is encrypted using a shared Public Key and data is decrypted using a private (non shared) key and that must be kept secret.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"> Encryption and safe data handling can be done in a variety of ways. <\/span><b>AES256 <\/b><span style=\"font-weight: 400;\">encryption is one of the most prevalent data security encryption algorithms.\u00a0<\/span><\/li>\n<\/ul>\n<p><b>How to Work with AES256\u00a0<\/b><\/p>\n<p><b>Encrypt Mechanism\u00a0<\/b><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"> To encrypt and decode data on iOS, we can utilize the CommonCrypto library.\u00a0<\/span><\/li>\n<\/ul>\n<p><b>Step 1<\/b> <span style=\"font-weight: 400;\">&#8211; Add framework into the project.<\/span><\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-7036\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-1-300x210.png\" alt=\"\" width=\"410\" height=\"287\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-1-300x210.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-1.png 468w\" sizes=\"(max-width: 410px) 100vw, 410px\" \/><\/p>\n<p><b>Step 2<\/b> <span style=\"font-weight: 400;\">&#8211; <\/span><span style=\"font-weight: 400;\">A<\/span><span style=\"font-weight: 400;\">dd Objective-C bridging header file.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-7037\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-2-300x33.png\" alt=\"\" width=\"409\" height=\"45\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-2-300x33.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-2.png 467w\" sizes=\"(max-width: 409px) 100vw, 409px\" \/><\/p>\n<p><b>Step 3<\/b> <span style=\"font-weight: 400;\">&#8211; <\/span><span style=\"font-weight: 400;\">Under the hood, this is a simple Crypter Struct that works with<\/span> <span style=\"font-weight: 400;\">CommonCrypto.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">protocol Randomizer {\u00a0\r\n\r\nstatic func randomIv() -&gt; Data\u00a0\r\n\r\nstatic func randomSalt() -&gt; Data\u00a0\r\n\r\nstatic func randomData(length: Int) -&gt; Data\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">protocol Crypter {\u00a0\r\n\r\nfunc encrypt(_ digest: Data) throws -&gt; Data\u00a0\r\n\r\nfunc decrypt(_ encrypted: Data) throws -&gt; Data\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">struct AES256Crypter {\u00a0\r\n\r\nprivate var key: Data\u00a0\r\n\r\nprivate var iv: Data\u00a0\r\n\r\npublic init(key: Data, iv: Data) throws {\u00a0\r\n\r\nguard key.count == kCCKeySizeAES256 else {\u00a0\r\n\r\nthrow Error.badKeyLength\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">guard iv.count == kCCBlockSizeAES128 else {\u00a0\r\n\r\nthrow Error.badInputVectorLength\u00a0\r\n\r\n}\u00a0\r\n\r\nself.key = key\u00a0\r\n\r\nself.iv = iv\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">enum Error: Swift.Error {\u00a0\r\n\r\ncase keyGeneration(status: Int)\r\n\r\ncase cryptoFailed(status: CCCryptorStatus)\u00a0\r\n\r\ncase badKeyLength\u00a0\r\n\r\ncase badInputVectorLength\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">private func crypt(input: Data, operation: CCOperation) throws -&gt; Data { var outLength = Int(0)\u00a0\r\n\r\nvar outBytes = [UInt8](repeating: 0, count: input.count + kCCBlockSizeAES128) var status: CCCryptorStatus = CCCryptorStatus(kCCSuccess)\u00a0\r\n\r\ninput.withUnsafeBytes { (encryptedBytes: UnsafePointer&lt;UInt8&gt;!) -&gt; () in iv.withUnsafeBytes { (ivBytes: UnsafePointer&lt;UInt8&gt;!) in\u00a0\r\n\r\nkey.withUnsafeBytes { (keyBytes: UnsafePointer&lt;UInt8&gt;!) -&gt; () in status = CCCrypt(operation,\u00a0\r\n\r\nCCAlgorithm(kCCAlgorithmAES128), \/\/ algorithm\u00a0\r\n\r\nCCOptions(kCCOptionPKCS7Padding), \/\/ options\u00a0\r\n\r\nkeyBytes, \/\/ key\u00a0\r\n\r\nkey.count, \/\/ keylength\u00a0\r\n\r\nivBytes, \/\/ iv\u00a0\r\n\r\nencryptedBytes, \/\/ dataIn\u00a0\r\n\r\ninput.count, \/\/ dataInLength\u00a0\r\n\r\n&amp;outBytes, \/\/ dataOut\u00a0\r\n\r\noutBytes.count, \/\/ dataOutAvailable\u00a0\r\n\r\n&amp;outLength) \/\/ dataOutMoved\u00a0\r\n\r\n}\u00a0\r\n\r\n}\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">guard status == kCCSuccess else {\u00a0\r\n\r\nthrow Error.cryptoFailed(status: status)\u00a0\r\n\r\n}\u00a0\r\n\r\nreturn Data(bytes: UnsafePointer&lt;UInt8&gt;(outBytes), count: outLength) }\u00a0\r\n\r\nstatic func createKey(password: Data, salt: Data) throws -&gt; Data { let length = kCCKeySizeAES256\u00a0\r\n\r\nvar status = Int32(0)\u00a0\r\n\r\nvar derivedBytes = [UInt8](repeating: 0, count: length)\u00a0\r\n\r\npassword.withUnsafeBytes { (passwordBytes: UnsafePointer&lt;Int8&gt;!) in salt.withUnsafeBytes { (saltBytes: UnsafePointer&lt;UInt8&gt;!) in\u00a0\r\n\r\nstatus = CCKeyDerivationPBKDF(CCPBKDFAlgorithm(kCCPBKDF2), \/\/ algorithm\u00a0\r\n\r\npasswordBytes, \/\/ password\r\n\r\npassword.count, \/\/ passwordLen\u00a0\r\n\r\nsaltBytes, \/\/ salt\u00a0\r\n\r\nsalt.count, \/\/ saltLen\u00a0\r\n\r\nCCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA1), \/\/ prf 10000, \/\/ rounds\u00a0\r\n\r\n&amp;derivedBytes, \/\/ derivedKey\u00a0\r\n\r\nlength) \/\/ derivedKeyLen\u00a0\r\n\r\n}\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true \">guard status == 0 else {\u00a0\r\n\r\nthrow Error.keyGeneration(status: Int(status))\u00a0\r\n\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">return Data(bytes: UnsafePointer&lt;UInt8&gt;(derivedBytes), count: length) }\u00a0\r\n\r\n}\u00a0\r\n\r\nextension AES256Crypter: Crypter {\u00a0\r\n\r\nfunc encrypt(_ digest: Data) throws -&gt; Data {\u00a0\r\n\r\nreturn try crypt(input: digest, operation: CCOperation(kCCEncrypt)) }\u00a0\r\n\r\nfunc decrypt(_ encrypted: Data) throws -&gt; Data {\u00a0\r\n\r\nreturn try crypt(input: encrypted, operation: CCOperation(kCCDecrypt)) }\u00a0\r\n\r\n}\u00a0\r\n\r\nextension AES256Crypter: Randomizer {\u00a0\r\n\r\nstatic func randomIv() -&gt; Data {\u00a0\r\n\r\nreturn randomData(length: kCCBlockSizeAES128)\u00a0\r\n\r\n}\u00a0\r\n\r\nstatic func randomSalt() -&gt; Data {\u00a0\r\n\r\nreturn randomData(length: 8)\u00a0\r\n\r\n}\u00a0\r\n\r\nstatic func randomData(length: Int) -&gt; Data {\u00a0\r\n\r\nvar data = Data(count: length)\r\n\r\nlet status = data.withUnsafeMutableBytes { mutableBytes in\u00a0\r\n\r\nSecRandomCopyBytes(kSecRandomDefault, length, mutableBytes) }\u00a0\r\n\r\nassert(status == Int32(0))\u00a0\r\n\r\nreturn data\u00a0\r\n\r\n}\u00a0\r\n\r\n}<\/pre>\n<p><b>Step 4 <\/b><span style=\"font-weight: 400;\">&#8211; <\/span><span style=\"font-weight: 400;\">Use crypter where it\u2019s needed.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-7038\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-3-300x196.png\" alt=\"\" width=\"427\" height=\"279\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-3-300x196.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/b-3.png 467w\" sizes=\"(max-width: 427px) 100vw, 427px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Encryption &#8211; Data encryption is the process of converting plain text data into an unreadable, encoded representation. After encrypted data has been decrypted, users and processes can read and process it.\u00a0 Encryption converts the data into an unusable form due to this there&#8217;s less chance of hacking and data theft.\u00a0 Plain text is scrambled by [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7039,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[380],"tags":[722,723,718,721,719,183,720],"class_list":["post-7035","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-swift-5","tag-blog","tag-blogging","tag-data","tag-data-encryption","tag-encryption","tag-swift","tag-swift-encryption"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Data Encryption in Swift - InnovationM - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/7035-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Encryption in Swift - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"Encryption &#8211; Data encryption is the process of converting plain text data into an unreadable, encoded representation. After encrypted data has been decrypted, users and processes can read and process it.\u00a0 Encryption converts the data into an unusable form due to this there&#8217;s less chance of hacking and data theft.\u00a0 Plain text is scrambled by [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/7035-2\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-11T04:20:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-11T07:35:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/Data-Encryption-in-Swift-Encryption-1024x576.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Data Encryption in Swift\",\"datePublished\":\"2021-11-11T04:20:25+00:00\",\"dateModified\":\"2021-11-11T07:35:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/\"},\"wordCount\":251,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Data-Encryption-in-Swift-Encryption.png\",\"keywords\":[\"blog\",\"blogging\",\"data\",\"data encryption\",\"encryption\",\"Swift\",\"swift encryption\"],\"articleSection\":[\"Swift 5\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/\",\"name\":\"Data Encryption in Swift - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Data-Encryption-in-Swift-Encryption.png\",\"datePublished\":\"2021-11-11T04:20:25+00:00\",\"dateModified\":\"2021-11-11T07:35:10+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Data-Encryption-in-Swift-Encryption.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Data-Encryption-in-Swift-Encryption.png\",\"width\":3556,\"height\":2000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/7035-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Encryption in Swift\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Encryption in Swift - InnovationM - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/7035-2\/","og_locale":"en_US","og_type":"article","og_title":"Data Encryption in Swift - InnovationM - Blog","og_description":"Encryption &#8211; Data encryption is the process of converting plain text data into an unreadable, encoded representation. After encrypted data has been decrypted, users and processes can read and process it.\u00a0 Encryption converts the data into an unusable form due to this there&#8217;s less chance of hacking and data theft.\u00a0 Plain text is scrambled by [&hellip;]","og_url":"https:\/\/www.innovationm.com\/blog\/7035-2\/","og_site_name":"InnovationM - Blog","article_published_time":"2021-11-11T04:20:25+00:00","article_modified_time":"2021-11-11T07:35:10+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/Data-Encryption-in-Swift-Encryption-1024x576.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Data Encryption in Swift","datePublished":"2021-11-11T04:20:25+00:00","dateModified":"2021-11-11T07:35:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/"},"wordCount":251,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/Data-Encryption-in-Swift-Encryption.png","keywords":["blog","blogging","data","data encryption","encryption","Swift","swift encryption"],"articleSection":["Swift 5"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/7035-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/","url":"https:\/\/www.innovationm.com\/blog\/7035-2\/","name":"Data Encryption in Swift - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/Data-Encryption-in-Swift-Encryption.png","datePublished":"2021-11-11T04:20:25+00:00","dateModified":"2021-11-11T07:35:10+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/7035-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/Data-Encryption-in-Swift-Encryption.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2021\/11\/Data-Encryption-in-Swift-Encryption.png","width":3556,"height":2000},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/7035-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Encryption in Swift"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/7035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=7035"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/7035\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/7039"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=7035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=7035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=7035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}