· 9 years ago · Oct 19, 2016, 08:42 AM
1func getCredential() -> String {
2
3 let secretKey = "RlBUX09SVF9Nb2JpbGVfXw=="
4 let sessionClaim = "this is the secret session claim"
5
6 // Create IV
7 let uuid = SwiftyUUID.Version4UUID()
8
9 let plainData = NSData(bytes: uuid as [UInt8], length: uuid.count)//uuidString.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
10 // Get IV String
11 let base64String = plainData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
12
13 var encryptedClaimString: String = try! sessionClaim.encrypt(cipher: AES(key: Array(secretKey.utf8), iv: uuid, blockMode: .CBC, padding: PKCS7()))
14
15 //var encryptedClaimString = try! sessionClaim.aesEncrypt( key: secretKey, iv: uuidString)
16 encryptedClaimString += ":"
17 encryptedClaimString += base64String
18
19 let utf8String = encryptedClaimString.data(using: String.Encoding.utf8)
20 let credentials = utf8String?.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
21 return credentials!;
22}
23
24public static string Decrypt(byte[] encrypted, byte[] key, byte[] iv)
25 {
26 string value = null;
27
28 // Create an Rijndael object
29 // with the specified key and IV.
30 using (Rijndael rijAlg = Rijndael.Create())
31 {
32 rijAlg.Key = key;
33 rijAlg.IV = iv;
34
35 // Create a decrytor to perform the stream transform.
36 ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);
37
38 // Create the streams used for decryption.
39 using (MemoryStream msDecrypt = new MemoryStream(encrypted))
40 {
41 using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
42 {
43 using (StreamReader srDecrypt = new StreamReader(csDecrypt))
44 {
45
46 // Read the decrypted bytes from the decrypting stream
47 // and place them in a string.
48 value = srDecrypt.ReadToEnd();
49 }
50 }
51 }
52 }
53
54 return value;
55 }