2018-05-09 20:18:33 +01:00
/**
* @author Matt C [matt@artemisbot.uk]
* @copyright Crown Copyright 2018
* @license Apache-2.0
*/
2019-07-09 12:23:59 +01:00
import Operation from "../Operation.mjs" ;
import { affineEncode } from "../lib/Ciphers.mjs" ;
2018-05-14 18:07:17 +00:00
2018-05-09 20:18:33 +01:00
/**
* Affine Cipher Encode operation
*/
class AffineCipherEncode extends Operation {
/**
* AffineCipherEncode constructor
*/
constructor () {
super ();
this . name = "Affine Cipher Encode" ;
this . module = "Ciphers" ;
this . description = "The Affine cipher is a type of monoalphabetic substitution cipher, wherein each letter in an alphabet is mapped to its numeric equivalent, encrypted using simple mathematical function, <code>(ax + b) % 26</code>, and converted back to a letter." ;
2018-08-21 19:07:13 +01:00
this . infoURL = "https://wikipedia.org/wiki/Affine_cipher" ;
2018-05-09 20:18:33 +01:00
this . inputType = "string" ;
this . outputType = "string" ;
this . args = [
{
"name" : "a" ,
"type" : "number" ,
"value" : 1
},
{
"name" : "b" ,
"type" : "number" ,
"value" : 0
}
];
}
/**
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
run ( input , args ) {
return affineEncode ( input , args );
}
/**
* Highlight Affine Cipher Encode
*
* @param {Object[]} pos
* @param {number} pos[].start
* @param {number} pos[].end
* @param {Object[]} args
* @returns {Object[]} pos
*/
highlight ( pos , args ) {
return pos ;
}
/**
* Highlight Affine Cipher Encode in reverse
*
* @param {Object[]} pos
* @param {number} pos[].start
* @param {number} pos[].end
* @param {Object[]} args
* @returns {Object[]} pos
*/
highlightReverse ( pos , args ) {
return pos ;
}
}
export default AffineCipherEncode ;