Created
January 28, 2018 05:36
-
-
Save caldwbr/4eb39d7ec9c4304879bf87c54e527866 to your computer and use it in GitHub Desktop.
encryption
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Data { | |
func encryptIt() -> Data { | |
let data = self | |
let encryptor = RNCryptor.EncryptorV3(encryptionKey: encryptKey!, hmacKey: hmacKey!) | |
return encryptor.encrypt(data: data as Data) | |
} | |
func decryptIt() -> Data { | |
do { | |
var data = self | |
let decryptor = RNCryptor.DecryptorV3(encryptionKey: encryptKey!, hmacKey: hmacKey!) | |
let originalData = try decryptor.decrypt(data: data) | |
return originalData | |
} catch { | |
print("WE HAD A FREAKING ERROR" + String(describing: error)) | |
return self | |
} | |
} | |
} | |
extension UIImage { | |
func oneTenthIt() -> UIImage { | |
let data = UIImageJPEGRepresentation(self, 0.1) | |
return UIImage(data: data!)! | |
} | |
func pixelCrypt(isEncrypted: Bool) -> UIImage { | |
//I TRIED THIS, and THE CODE COMMENTED OUT BELOW, BUT NEITHER WORKED | |
let data = UIImagePNGRepresentation(self) | |
let cryptedData = isEncrypted ? data.decryptIt() : data.encryptIt() | |
return UIImage(data: cryptedData!)! | |
/*let imageRef = self.cgImage | |
let width = imageRef?.width | |
let height = imageRef?.height | |
let colorSpace = CGColorSpaceCreateDeviceRGB() | |
let sizeOfRawDataInBytes: Int = Int(height! * width! * 4) | |
let alignment = MemoryLayout<Int>.stride | |
let rawData = UnsafeMutableRawPointer.allocate(bytes: sizeOfRawDataInBytes, alignedTo: alignment) | |
guard let context = CGContext(data: rawData, width: width!, | |
height: height!, bitsPerComponent: 8, | |
bytesPerRow: width! * 4, space: colorSpace, | |
bitmapInfo: CGImageAlphaInfo.premultipliedFirst.rawValue) | |
else { print("What the hay"); return self } | |
context.draw(imageRef!, in: CGRect(x: 0, y: 0, width: CGFloat(width!), height: CGFloat(height!))) | |
var data = Data(bytes: rawData, count: sizeOfRawDataInBytes) | |
//print(data.base64EncodedString().characters.prefix(10)) | |
data = isEncrypted ? data.decryptIt() : data.encryptIt() | |
//print(data.base64EncodedString().characters.prefix(10)) | |
//rawData.deallocate(bytes: sizeOfRawDataInBytes, alignedTo: alignment) | |
//let nsData = NSMutableData(data: data) | |
//let rawPtr = nsData.mutableBytes | |
let uint8Ptr = UnsafeMutablePointer<UInt8>.allocate(capacity: data.count) | |
uint8Ptr.initialize(from: data) //<-copying the data | |
//You need to keep `uint8Ptr` and `data.count` for future management | |
let uint8PtrCount = data.count | |
//You can convert it to `UnsafeRawPointer` | |
let rawPtr = UnsafeMutableRawPointer(mutating: uint8Ptr) | |
guard let context2 = CGContext(data: rawPtr, width: width!, height: height!, bitsPerComponent: 8, bytesPerRow: width! * 4, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedFirst.rawValue) else { print("What the freaking"); return self } | |
guard let imageRef2 = context2.makeImage() else { return self } | |
//Deinitialize and deallocate the region | |
uint8Ptr.deinitialize(count: uint8PtrCount) | |
uint8Ptr.deallocate(capacity: uint8PtrCount) | |
return UIImage(cgImage: imageRef2) | |
*/ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment