Pārlūkot izejas kodu

ADd full AES example

Marcin Krzyzanowski 4 gadi atpakaļ
vecāks
revīzija
89f3d4b4c1
2 mainītis faili ar 34 papildinājumiem un 2 dzēšanām
  1. 1 1
      CryptoSwift.playground/contents.xcplayground
  2. 33 1
      README.md

+ 1 - 1
CryptoSwift.playground/contents.xcplayground

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <playground version='5.0' target-platform='macos' display-mode='raw'>
     <timeline fileName='timeline.xctimeline'/>
-</playground>
+</playground>

+ 33 - 1
README.md

@@ -362,8 +362,40 @@ Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key lengt
 - AES-256 = 32 bytes
 
 AES-256 example
+
+```swift
+let encryptedBytes = try AES(key: [1,2,3,...,32], blockMode: CBC(iv: [1,2,3,...,16]), padding: .pkcs7)
+```
+
+Full example:
+
 ```swift
-try AES(key: [1,2,3,...,32], blockMode: CBC(iv: [1,2,3,...,16]), padding: .pkcs7)
+  let password: [UInt8] = Array("s33krit".utf8)
+  let salt: [UInt8] = Array("nacllcan".utf8)
+
+  /* Generate a key from a `password`. Optional if you already have a key */
+  let key = try PKCS5.PBKDF2(
+      password: password,
+      salt: salt,
+      iterations: 4096,
+      keyLength: 32, /* AES-256 */
+      variant: .sha256
+  ).calculate()
+
+  /* Generate random IV value. IV is public value. Either need to generate, or get it from elsewhere */
+  let iv = AES.randomIV(AES.blockSize)
+
+  /* AES cryptor instance */
+  let aes = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7)
+
+  /* Encrypt Data */
+  let inputData = Data()
+  let encryptedBytes = try aes.encrypt(inputData.bytes)
+  let encryptedData = Data(encryptedBytes)
+
+  /* Decrypt Data */
+  let decryptedBytes = try aes.decrypt(encryptedData.bytes)
+  let decryptedData = Data(decryptedBytes)
 ```
 
 ###### All at once