2018-05-17 17:11:34 +02:00
/ * *
* @ author n1474335 [ n1474335 @ gmail . com ]
* @ copyright Crown Copyright 2016
* @ license Apache - 2.0
* /
2019-07-09 13:23:59 +02:00
import Operation from "../Operation.mjs" ;
import Utils from "../Utils.mjs" ;
import { HASH _DELIM _OPTIONS } from "../lib/Delim.mjs" ;
2018-05-17 17:11:34 +02:00
import ctphjs from "ctph.js" ;
2019-07-09 13:23:59 +02:00
import OperationError from "../errors/OperationError.mjs" ;
2018-05-17 17:11:34 +02:00
/ * *
* Compare CTPH hashes operation
* /
class CompareCTPHHashes extends Operation {
/ * *
* CompareCTPHHashes constructor
* /
constructor ( ) {
super ( ) ;
this . name = "Compare CTPH hashes" ;
2018-12-26 00:58:00 +01:00
this . module = "Crypto" ;
2018-05-17 17:11:34 +02:00
this . description = "Compares two Context Triggered Piecewise Hashing (CTPH) fuzzy hashes to determine the similarity between them on a scale of 0 to 100." ;
2018-08-21 20:07:13 +02:00
this . infoURL = "https://forensicswiki.org/wiki/Context_Triggered_Piecewise_Hashing" ;
2018-05-17 17:11:34 +02:00
this . inputType = "string" ;
this . outputType = "Number" ;
this . args = [
{
"name" : "Delimiter" ,
"type" : "option" ,
"value" : HASH _DELIM _OPTIONS
}
] ;
}
/ * *
* @ param { string } input
* @ param { Object [ ] } args
* @ returns { Number }
* /
run ( input , args ) {
const samples = input . split ( Utils . charRep ( args [ 0 ] ) ) ;
if ( samples . length !== 2 ) throw new OperationError ( "Incorrect number of samples." ) ;
return ctphjs . similarity ( samples [ 0 ] , samples [ 1 ] ) ;
}
}
export default CompareCTPHHashes ;