d-encode-decode
Version:
Encode and Decode String Uniquely, Every Encryption is different and Unique
111 lines (89 loc) • 4.6 kB
JavaScript
let salted_key="ksdflskklsdfj";
const cipher = salt => {
const textToChars = text => text.split('').map(c => c.charCodeAt(0));
const byteHex = n => ("0" + Number(n).toString(16)).substr(-2);
const applySaltToChar = code => textToChars(salt).reduce((a,b) => a ^ b, code);
return text => text.split('')
.map(textToChars)
.map(applySaltToChar)
.map(byteHex)
.join('');
}
const decipher = salt => {
const textToChars = text => text.split('').map(c => c.charCodeAt(0));
const applySaltToChar = code => textToChars(salt).reduce((a,b) => a ^ b, code);
return encoded => encoded.match(/.{1,2}/g)
.map(hex => parseInt(hex, 16))
.map(applySaltToChar)
.map(charCode => String.fromCharCode(charCode))
.join('');
}
const random_number=(min, max)=> {
return Math.floor(min + Math.random()*(max - min + 1))
}
const keys_set1=[
'ICSIGkmFD2','VQkD4tz3pL','qV7rHm5xco','UIox9vb8Io','5HTtK4clSj','y9OEAqbjxu','5yseuhlj7p','CEavNqyCFg','o7cah7Gep2','j5496XDF2Q','VSp8MztiJs','ArzMyK6eIS','dkGgTW2krt','muMjL4kGOm','o4go6OTLK8','WuiMKupL1o','Z7lrqQw1pP','wERtCBebqu','I14ftBdMbL','THIdicb1Ts','2SyJbq3Qom','jtJvrb6MxW','w3QFqtIBsS','TVcz0gSzzt','nTywSO9ap1','yukvMhd9jq','XdIwqUWe2f','kN6eo3nmzc','93SgzdpyMX','kLmyLAySWZ','S0WvEqQqXX','WnyKvxj22q','u2ys5N5Mbo','vqhqYn56Ge','JKwttnsWCi','1DNw3jfrWC','acgf9H66O0','pEAlImfcao','t3ovPXsDpY','orx9lNQvqP','Zk7GhzHva6','95WIJQ9Hvg','KZJcQYo1hY','b3PVDVkmKr','jqzi7jVD1P','1ZbmX4QGtH','zlkyjSBusE','fzTAMVZofC','RdbaAViMYt','iksoIShem5'
]
const keys_set2=[
'9mHNm0eFCo','tbVfE8qVKL','9g6wbQLEiM','p0xLd4nXZ2','gHyBCc6Mdu','vzmq8akanX','L3DaOsQB7a','TYb0e4ywEq','EnYaANMuA9','uq660u6OmM','CwmBU57VCa','X3gjD2x73w','Rv9VnyToD9','vk9nRzgAOi','KPYM4l7vQD','Yv4bCntV5e','3IKuavvNFG','3Njif00f8P','XBBIciwh6g','viw6CJkZNc','FX5wQ3ZFl5','5NrqmJaddd','RUKPn3nQ8m','UMV7aLaOOI','wWJgZ3wk9l','NaYuQ6jQ89','f39jxqBbLI','JLCEBYWhAW','ixQc4MZxY4','uECZoAohI3','hUCZz030ze','UfEG0KuzzP','ujPfu5qD6s','IOHrBFCWNS','s9yI17bknC','NXK5b5ZYwY','dgqJv2KMCZ','r6hJm9pxeM','rI9HM283n4','muvUrVQB3d','p9Y43z4Ckn','N8PUvtJYpB','XbRFnBbAf6','ZqoRBjNE2N','dAjd3Iapa1','aSaJeYpx3d','d9P248l5dU','rRPNOLXMfQ','sgw2U7trXA','8H9furGs4W'
]
const key =(keys)=>{
salted_key=keys;
return
}
const ts = () => Math.floor(new Date().getTime() / 1000);
function encode(string,time=0){
const start = Date.now();
var num1=random_number(0,49);
var num2=random_number(0,49);
if(time<1){
const myCipher = cipher(salted_key)
var enc_key=myCipher(num1+"$"+num2);
var rand_str=keys_set1[num1]+keys_set2[num2]
//Then cipher any text:
const newCipher=cipher(rand_str);
var secure_encoded_string=newCipher(string)
var temp_enc=secure_encoded_string+"$$##$$"+enc_key;
var final_encoded_string=myCipher(temp_enc);
}else{
const myCipher = cipher(salted_key)
var current_time=ts();
var enc_key=myCipher(num1+"$"+num2+"$"+current_time+"$"+time);
var rand_str=keys_set1[num1]+keys_set2[num2]
//Then cipher any text:
const newCipher=cipher(rand_str);
var secure_encoded_string=newCipher(string)
var temp_enc=secure_encoded_string+"$$##$$"+enc_key;
var final_encoded_string=myCipher(temp_enc);
}
// To create a cipher
return final_encoded_string;
}
function decode(string,time=0){
const start = Date.now();
const myDecipher = decipher(salted_key)
var decoded_string1=myDecipher(string)
var data_array = decoded_string1.split("$$##$$");
var enc_string_data=data_array[0];
var enc_key_salt=data_array[1];
var decoded_keys=myDecipher(enc_key_salt);
var key_indexes=decoded_keys.split("$");
if(key_indexes.length>2){
var current_time=ts();
if(((current_time-key_indexes[2]))<((key_indexes[3]+1)/10)){
//Process of decoding
var key_for_decode=keys_set1[key_indexes[0]]+keys_set2[key_indexes[1]];
const newDecipher = decipher(key_for_decode)
var decoded_string=newDecipher(enc_string_data)
}else{
var decoded_string=0;
}
}else{
var key_for_decode=keys_set1[key_indexes[0]]+keys_set2[key_indexes[1]];
//Process of decoding
const newDecipher = decipher(key_for_decode)
var decoded_string=newDecipher(enc_string_data)
}
return decoded_string;
}
module.exports = {encode,decode,key}