2022-03-05 22:57:23 +04:00
|
|
|
import crypto from 'crypto';
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {string} hexStr - input hex string
|
|
|
|
* @returns {string} - output binary string
|
|
|
|
*/
|
|
|
|
function hexToBinary(hexStr: string): string {
|
|
|
|
return (parseInt(hexStr, 16).toString(2))
|
|
|
|
.padStart(8, '0');
|
|
|
|
}
|
2019-01-25 02:23:00 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Create binary md5
|
2020-05-09 05:38:25 +03:00
|
|
|
*
|
2019-01-25 02:23:00 +03:00
|
|
|
* @param stringToHash - string to hash
|
|
|
|
* @returns {string} - binary hash of argument
|
|
|
|
*/
|
2022-03-05 22:57:23 +04:00
|
|
|
export function binaryMD5(stringToHash: string): string {
|
|
|
|
return hexToBinary(crypto.createHash('md5')
|
2019-01-25 02:23:00 +03:00
|
|
|
.update(stringToHash)
|
2022-03-05 22:57:23 +04:00
|
|
|
.digest('hex'));
|
2019-03-11 18:44:00 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns 16 random bytes in hex format
|
2020-05-09 05:38:25 +03:00
|
|
|
*
|
|
|
|
* @returns {Promise<string>}
|
2019-03-11 18:44:00 +03:00
|
|
|
*/
|
2022-03-05 22:57:23 +04:00
|
|
|
export function random16(): Promise<string> {
|
2019-03-11 18:44:00 +03:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
crypto.randomBytes(16, (err, raw) => {
|
|
|
|
if (err) {
|
|
|
|
reject(err);
|
|
|
|
}
|
|
|
|
|
|
|
|
resolve(raw.toString('hex'));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-03-05 22:57:23 +04:00
|
|
|
export default {
|
2019-03-11 18:44:00 +03:00
|
|
|
binaryMD5,
|
2020-05-09 05:38:25 +03:00
|
|
|
random16,
|
2019-01-25 02:23:00 +03:00
|
|
|
};
|