mirror of
https://github.com/KyleBanks/XOREncryption.git
synced 2023-08-10 21:13:15 +03:00
commit
86f440ca79
@ -10,12 +10,13 @@ Simple implementation of XOR Encryption/Decrypting in various languages, includi
|
|||||||
- [F#](F%23/Program.fs) by [pawelizycki](https://github.com/pawelizycki)
|
- [F#](F%23/Program.fs) by [pawelizycki](https://github.com/pawelizycki)
|
||||||
- [Go](Go/xor.go)
|
- [Go](Go/xor.go)
|
||||||
- [Groovy](Groovy/XOREncryption.groovy)
|
- [Groovy](Groovy/XOREncryption.groovy)
|
||||||
- [Java \(Android Compatible\)](Java \(Android compatible\)/XOREncryption.java)
|
- [Java \(Android Compatible\)](Java%20\(Android%20compatible\)/XOREncryption.java)
|
||||||
- [JavaScript \(Node.js Compatible\)](JavaScript/XOREncryption.js)
|
- [JavaScript \(Node.js Compatible\)](JavaScript/XOREncryption.js)
|
||||||
- [Kotlin](Kotlin/XOREncryption.kt)
|
- [Kotlin](Kotlin/XOREncryption.kt)
|
||||||
- [Objective-C](Objective-C/main.m)
|
- [Objective-C](Objective-C/main.m)
|
||||||
- [Python](Python/XOREncryption.py)
|
- [Python](Python/XOREncryption.py)
|
||||||
- [Ruby](Ruby/xor.rb)
|
- [Ruby](Ruby/xor.rb)
|
||||||
|
- [Swift](Swift/XOREncryption.swift)
|
||||||
- [Visual Basic.NET](VB.NET/XORCrypto.vb)
|
- [Visual Basic.NET](VB.NET/XORCrypto.vb)
|
||||||
|
|
||||||
This implementation goes beyond the basic single-key model to use multiple keys in a particular sequence, making it that much more difficult to brute-force.
|
This implementation goes beyond the basic single-key model to use multiple keys in a particular sequence, making it that much more difficult to brute-force.
|
||||||
|
33
Swift/XOREncryption.swift
Normal file
33
Swift/XOREncryption.swift
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
//
|
||||||
|
// XOREncryption.swift
|
||||||
|
// XOREncryption
|
||||||
|
//
|
||||||
|
// Created by Denis Simon on 2019-01-08.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
extension Character {
|
||||||
|
func utf8() -> UInt8 {
|
||||||
|
let utf8 = String(self).utf8
|
||||||
|
return utf8[utf8.startIndex]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func encryptDecrypt(_ input: String) -> String {
|
||||||
|
let key = "KCQ".characters.map { $0 } //Can be any chars, and any length array
|
||||||
|
let length = key.count
|
||||||
|
var output = ""
|
||||||
|
|
||||||
|
for i in input.characters.enumerated() {
|
||||||
|
let byte = [i.element.utf8() ^ key[i.offset % length].utf8()]
|
||||||
|
output.append(String(bytes: byte, encoding: .utf8)!)
|
||||||
|
}
|
||||||
|
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
|
||||||
|
let encrypted = encryptDecrypt("Hello, World!")
|
||||||
|
print("Encrypted: \(encrypted)") // output: Encrypted: &=',}k>9/5j
|
||||||
|
let decrypted = encryptDecrypt(encrypted)
|
||||||
|
print("Decrypted: \(decrypted)") // output: Decrypted: Hello, World!
|
Loading…
Reference in New Issue
Block a user