pseudo-shuffle
Version:
Make the index look like it is shuffled according to the range so that it is not conflicted without the actual shuffle.
3 lines (2 loc) • 655 B
JavaScript
import e from"node-fe1-fpe";const n="psuedo-shuffle",i=({index:i,min:r,max:l,privateKey:t,publicKey:u})=>{if(l-r<3)return i;if((l-r)%2==0){const e=Math.ceil(r+(l-r)/2);if(i===e)return l;i===l&&(i=e),--l}return i<r||i>l?i:e.encrypt(l-r+1,i-r,null!=t?t:n,null!=u?u:n)+r},r=({index:r,min:l,max:t,privateKey:u,publicKey:p})=>{if(t-l<3)return r;const c=(t-l)%2==0;if(c){if(r>t-1)return Math.ceil(l+(t-l)/2);--t}return r<l||r>t?r:c&&r===i({index:Math.ceil(l+(t-l)/2),max:t,min:l,privateKey:null!=u?u:n,publicKey:null!=p?p:n})?t+1:e.decrypt(t-l+1,r-l,null!=u?u:n,null!=p?p:n)+l};export{r as decode,i as encode};
//# sourceMappingURL=pseudo-shuffle.modern.js.map