Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module CryptoTwo
- open System
- open System.Text
- let base64String = "PAADREshCgcRDgZPBAoPSxgGBBEOAR0ABksVEUUeDw4YCksoBlQWAg5PBgoRGBUNAxkEGBUGS
- x8KGkUfDgQHEUVLIgEWAgoDVAoFSw0NBksFBhEGBEsLGBARGBUNSUsKDQ1FBgQVGAwcDk8WHA
- cETwQXEQ4fBgocCgsOAAUCClQADQ4EABwcBQoTCksKGxUOHkVPOQoRDk8eABgRDA4ASx8dGwY
- DDk8EBA8PBhoCHksVEQcSSwEdAEsJFhgKSxEOVBEZHgsaCkVLIB9JSw0DFQIKSxsbRTkkNSMk
- JzQUNQkCCAo9FiIGHwYAGBgKEBg="
- let isSome o =
- match o with
- | None -> false
- | _ -> true
- let decodeBase64 (base64String:string) =
- ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(base64String))
- let xorStringWithSingleByte (string1:string) (singleByte:byte) =
- Encoding.ASCII.GetBytes(string1)
- |> Seq.map (fun x -> Convert.ToChar(x ^^^ singleByte).ToString())
- |> Seq.reduce (+)
- //let reduct acc b =
- // xorStringWithSingleByte acc b
- let xorStringWithPassword(string1:string) (password:string) =
- password
- |> Seq.map (fun x -> Convert.ToByte(x))
- |> Seq.fold xorStringWithSingleByte string1
- let checkWordInCandidateString (word:string) (candidateString:string) =
- match word with
- | word when candidateString.Contains(word) -> Some candidateString
- | _ -> None
- let result (l:string list) =
- match l with
- | l when l.IsEmpty -> ["Brak rozwiązań"]
- | l -> l
- let decryptByFindingWord (word:string) (decodedString:string) =
- ["dupa";"cycki"]
- |> List.map (xorStringWithPassword decodedString)
- |> List.map (checkWordInCandidateString word)
- |> List.filter isSome
- |> List.map (fun x -> x.Value)
- |> result
- |> List.find (fun x -> true)
- let findSolution =
- base64String
- |> decodeBase64
- |> decryptByFindingWord "ROZWAL"
- let main argv =
- printfn "%s" findSolution
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement