Created
July 14, 2020 07:48
-
-
Save GCBallesteros/9fd4d949752724255eb4addf6f97814b to your computer and use it in GitHub Desktop.
Utility functions to solve the cryptopals challenges
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
import fs from "fs" | |
export enum ByteEncoding { | |
Base64, | |
Hex, | |
} | |
export function hexToBuff(data: string): Buffer { | |
return Buffer.from(data, "hex"); | |
} | |
export function B64ToBuff(data: string): Buffer { | |
return Buffer.from(data, "base64"); | |
} | |
export function buffTo64(data: Buffer): string { | |
return data.toString("base64"); | |
} | |
export function buffToHex(data: Buffer): string { | |
return data.toString("hex"); | |
} | |
export function fileToBuff( | |
filename: string, | |
encoding: ByteEncoding, | |
split_lines: boolean | |
): Array<Buffer> { | |
const data = fs.readFileSync(filename, "utf8"); | |
let data_lines: Array<string> = []; | |
if (split_lines) { | |
data_lines = data.split("\n"); | |
} else { | |
data_lines = [data]; | |
} | |
let output: Array<Buffer> = []; | |
if (encoding === ByteEncoding.Base64) { | |
output = data_lines.map((x) => B64ToBuff(x)); | |
} else if (encoding === ByteEncoding.Hex) { | |
output = data_lines.map((x) => hexToBuff(x)); | |
} | |
return output; | |
} | |
export function sliceBuffer(buf: Buffer, offset: number, step: number): any { | |
let arr = []; | |
for (let i = offset; i < buf.length; i += step) { | |
arr.push(buf[i]); | |
} | |
return Buffer.from(arr); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment