Skip to content

Instantly share code, notes, and snippets.

@LeonardoCiaccio
Created March 19, 2017 15:11
Show Gist options
  • Save LeonardoCiaccio/ef4f4f4e260ae331235890e6d02bbdab to your computer and use it in GitHub Desktop.
Save LeonardoCiaccio/ef4f4f4e260ae331235890e6d02bbdab to your computer and use it in GitHub Desktop.
Bookmarklet Password By File
// MD5 Lib, very fast, https://github.com/satazor/js-spark-md5
(function(factory){if(typeof exports==="object"){module.exports=factory()}else if(typeof define==="function"&&define.amd){define(factory)}else{var glob;try{glob=window}catch(e){glob=self}glob.SparkMD5=factory()}})(function(undefined){"use strict";var add32=function(a,b){return a+b&4294967295},hex_chr=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function cmn(q,a,b,x,s,t){a=add32(add32(a,q),add32(x,t));return add32(a<<s|a>>>32-s,b)}function md5cycle(x,k){var a=x[0],b=x[1],c=x[2],d=x[3];a+=(b&c|~b&d)+k[0]-680876936|0;a=(a<<7|a>>>25)+b|0;d+=(a&b|~a&c)+k[1]-389564586|0;d=(d<<12|d>>>20)+a|0;c+=(d&a|~d&b)+k[2]+606105819|0;c=(c<<17|c>>>15)+d|0;b+=(c&d|~c&a)+k[3]-1044525330|0;b=(b<<22|b>>>10)+c|0;a+=(b&c|~b&d)+k[4]-176418897|0;a=(a<<7|a>>>25)+b|0;d+=(a&b|~a&c)+k[5]+1200080426|0;d=(d<<12|d>>>20)+a|0;c+=(d&a|~d&b)+k[6]-1473231341|0;c=(c<<17|c>>>15)+d|0;b+=(c&d|~c&a)+k[7]-45705983|0;b=(b<<22|b>>>10)+c|0;a+=(b&c|~b&d)+k[8]+1770035416|0;a=(a<<7|a>>>25)+b|0;d+=(a&b|~a&c)+k[9]-1958414417|0;d=(d<<12|d>>>20)+a|0;c+=(d&a|~d&b)+k[10]-42063|0;c=(c<<17|c>>>15)+d|0;b+=(c&d|~c&a)+k[11]-1990404162|0;b=(b<<22|b>>>10)+c|0;a+=(b&c|~b&d)+k[12]+1804603682|0;a=(a<<7|a>>>25)+b|0;d+=(a&b|~a&c)+k[13]-40341101|0;d=(d<<12|d>>>20)+a|0;c+=(d&a|~d&b)+k[14]-1502002290|0;c=(c<<17|c>>>15)+d|0;b+=(c&d|~c&a)+k[15]+1236535329|0;b=(b<<22|b>>>10)+c|0;a+=(b&d|c&~d)+k[1]-165796510|0;a=(a<<5|a>>>27)+b|0;d+=(a&c|b&~c)+k[6]-1069501632|0;d=(d<<9|d>>>23)+a|0;c+=(d&b|a&~b)+k[11]+643717713|0;c=(c<<14|c>>>18)+d|0;b+=(c&a|d&~a)+k[0]-373897302|0;b=(b<<20|b>>>12)+c|0;a+=(b&d|c&~d)+k[5]-701558691|0;a=(a<<5|a>>>27)+b|0;d+=(a&c|b&~c)+k[10]+38016083|0;d=(d<<9|d>>>23)+a|0;c+=(d&b|a&~b)+k[15]-660478335|0;c=(c<<14|c>>>18)+d|0;b+=(c&a|d&~a)+k[4]-405537848|0;b=(b<<20|b>>>12)+c|0;a+=(b&d|c&~d)+k[9]+568446438|0;a=(a<<5|a>>>27)+b|0;d+=(a&c|b&~c)+k[14]-1019803690|0;d=(d<<9|d>>>23)+a|0;c+=(d&b|a&~b)+k[3]-187363961|0;c=(c<<14|c>>>18)+d|0;b+=(c&a|d&~a)+k[8]+1163531501|0;b=(b<<20|b>>>12)+c|0;a+=(b&d|c&~d)+k[13]-1444681467|0;a=(a<<5|a>>>27)+b|0;d+=(a&c|b&~c)+k[2]-51403784|0;d=(d<<9|d>>>23)+a|0;c+=(d&b|a&~b)+k[7]+1735328473|0;c=(c<<14|c>>>18)+d|0;b+=(c&a|d&~a)+k[12]-1926607734|0;b=(b<<20|b>>>12)+c|0;a+=(b^c^d)+k[5]-378558|0;a=(a<<4|a>>>28)+b|0;d+=(a^b^c)+k[8]-2022574463|0;d=(d<<11|d>>>21)+a|0;c+=(d^a^b)+k[11]+1839030562|0;c=(c<<16|c>>>16)+d|0;b+=(c^d^a)+k[14]-35309556|0;b=(b<<23|b>>>9)+c|0;a+=(b^c^d)+k[1]-1530992060|0;a=(a<<4|a>>>28)+b|0;d+=(a^b^c)+k[4]+1272893353|0;d=(d<<11|d>>>21)+a|0;c+=(d^a^b)+k[7]-155497632|0;c=(c<<16|c>>>16)+d|0;b+=(c^d^a)+k[10]-1094730640|0;b=(b<<23|b>>>9)+c|0;a+=(b^c^d)+k[13]+681279174|0;a=(a<<4|a>>>28)+b|0;d+=(a^b^c)+k[0]-358537222|0;d=(d<<11|d>>>21)+a|0;c+=(d^a^b)+k[3]-722521979|0;c=(c<<16|c>>>16)+d|0;b+=(c^d^a)+k[6]+76029189|0;b=(b<<23|b>>>9)+c|0;a+=(b^c^d)+k[9]-640364487|0;a=(a<<4|a>>>28)+b|0;d+=(a^b^c)+k[12]-421815835|0;d=(d<<11|d>>>21)+a|0;c+=(d^a^b)+k[15]+530742520|0;c=(c<<16|c>>>16)+d|0;b+=(c^d^a)+k[2]-995338651|0;b=(b<<23|b>>>9)+c|0;a+=(c^(b|~d))+k[0]-198630844|0;a=(a<<6|a>>>26)+b|0;d+=(b^(a|~c))+k[7]+1126891415|0;d=(d<<10|d>>>22)+a|0;c+=(a^(d|~b))+k[14]-1416354905|0;c=(c<<15|c>>>17)+d|0;b+=(d^(c|~a))+k[5]-57434055|0;b=(b<<21|b>>>11)+c|0;a+=(c^(b|~d))+k[12]+1700485571|0;a=(a<<6|a>>>26)+b|0;d+=(b^(a|~c))+k[3]-1894986606|0;d=(d<<10|d>>>22)+a|0;c+=(a^(d|~b))+k[10]-1051523|0;c=(c<<15|c>>>17)+d|0;b+=(d^(c|~a))+k[1]-2054922799|0;b=(b<<21|b>>>11)+c|0;a+=(c^(b|~d))+k[8]+1873313359|0;a=(a<<6|a>>>26)+b|0;d+=(b^(a|~c))+k[15]-30611744|0;d=(d<<10|d>>>22)+a|0;c+=(a^(d|~b))+k[6]-1560198380|0;c=(c<<15|c>>>17)+d|0;b+=(d^(c|~a))+k[13]+1309151649|0;b=(b<<21|b>>>11)+c|0;a+=(c^(b|~d))+k[4]-145523070|0;a=(a<<6|a>>>26)+b|0;d+=(b^(a|~c))+k[11]-1120210379|0;d=(d<<10|d>>>22)+a|0;c+=(a^(d|~b))+k[2]+718787259|0;c=(c<<15|c>>>17)+d|0;b+=(d^(c|~a))+k[9]-343485551|0;b=(b<<21|b>>>11)+c|0;x[0]=a+x[0]|0;x[1]=b+x[1]|0;x[2]=c+x[2]|0;x[3]=d+x[3]|0}function md5blk(s){var md5blks=[],i;for(i=0;i<64;i+=4){md5blks[i>>2]=s.charCodeAt(i)+(s.charCodeAt(i+1)<<8)+(s.charCodeAt(i+2)<<16)+(s.charCodeAt(i+3)<<24)}return md5blks}function md5blk_array(a){var md5blks=[],i;for(i=0;i<64;i+=4){md5blks[i>>2]=a[i]+(a[i+1]<<8)+(a[i+2]<<16)+(a[i+3]<<24)}return md5blks}function md51(s){var n=s.length,state=[1732584193,-271733879,-1732584194,271733878],i,length,tail,tmp,lo,hi;for(i=64;i<=n;i+=64){md5cycle(state,md5blk(s.substring(i-64,i)))}s=s.substring(i-64);length=s.length;tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i<length;i+=1){tail[i>>2]|=s.charCodeAt(i)<<(i%4<<3)}tail[i>>2]|=128<<(i%4<<3);if(i>55){md5cycle(state,tail);for(i=0;i<16;i+=1){tail[i]=0}}tmp=n*8;tmp=tmp.toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(state,tail);return state}function md51_array(a){var n=a.length,state=[1732584193,-271733879,-1732584194,271733878],i,length,tail,tmp,lo,hi;for(i=64;i<=n;i+=64){md5cycle(state,md5blk_array(a.subarray(i-64,i)))}a=i-64<n?a.subarray(i-64):new Uint8Array(0);length=a.length;tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i<length;i+=1){tail[i>>2]|=a[i]<<(i%4<<3)}tail[i>>2]|=128<<(i%4<<3);if(i>55){md5cycle(state,tail);for(i=0;i<16;i+=1){tail[i]=0}}tmp=n*8;tmp=tmp.toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(state,tail);return state}function rhex(n){var s="",j;for(j=0;j<4;j+=1){s+=hex_chr[n>>j*8+4&15]+hex_chr[n>>j*8&15]}return s}function hex(x){var i;for(i=0;i<x.length;i+=1){x[i]=rhex(x[i])}return x.join("")}if(hex(md51("hello"))!=="5d41402abc4b2a76b9719d911017c592"){add32=function(x,y){var lsw=(x&65535)+(y&65535),msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}}if(typeof ArrayBuffer!=="undefined"&&!ArrayBuffer.prototype.slice){(function(){function clamp(val,length){val=val|0||0;if(val<0){return Math.max(val+length,0)}return Math.min(val,length)}ArrayBuffer.prototype.slice=function(from,to){var length=this.byteLength,begin=clamp(from,length),end=length,num,target,targetArray,sourceArray;if(to!==undefined){end=clamp(to,length)}if(begin>end){return new ArrayBuffer(0)}num=end-begin;target=new ArrayBuffer(num);targetArray=new Uint8Array(target);sourceArray=new Uint8Array(this,begin,num);targetArray.set(sourceArray);return target}})()}function toUtf8(str){if(/[\u0080-\uFFFF]/.test(str)){str=unescape(encodeURIComponent(str))}return str}function utf8Str2ArrayBuffer(str,returnUInt8Array){var length=str.length,buff=new ArrayBuffer(length),arr=new Uint8Array(buff),i;for(i=0;i<length;i+=1){arr[i]=str.charCodeAt(i)}return returnUInt8Array?arr:buff}function arrayBuffer2Utf8Str(buff){return String.fromCharCode.apply(null,new Uint8Array(buff))}function concatenateArrayBuffers(first,second,returnUInt8Array){var result=new Uint8Array(first.byteLength+second.byteLength);result.set(new Uint8Array(first));result.set(new Uint8Array(second),first.byteLength);return returnUInt8Array?result:result.buffer}function hexToBinaryString(hex){var bytes=[],length=hex.length,x;for(x=0;x<length-1;x+=2){bytes.push(parseInt(hex.substr(x,2),16))}return String.fromCharCode.apply(String,bytes)}function SparkMD5(){this.reset()}SparkMD5.prototype.append=function(str){this.appendBinary(toUtf8(str));return this};SparkMD5.prototype.appendBinary=function(contents){this._buff+=contents;this._length+=contents.length;var length=this._buff.length,i;for(i=64;i<=length;i+=64){md5cycle(this._hash,md5blk(this._buff.substring(i-64,i)))}this._buff=this._buff.substring(i-64);return this};SparkMD5.prototype.end=function(raw){var buff=this._buff,length=buff.length,i,tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],ret;for(i=0;i<length;i+=1){tail[i>>2]|=buff.charCodeAt(i)<<(i%4<<3)}this._finish(tail,length);ret=hex(this._hash);if(raw){ret=hexToBinaryString(ret)}this.reset();return ret};SparkMD5.prototype.reset=function(){this._buff="";this._length=0;this._hash=[1732584193,-271733879,-1732584194,271733878];return this};SparkMD5.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash}};SparkMD5.prototype.setState=function(state){this._buff=state.buff;this._length=state.length;this._hash=state.hash;return this};SparkMD5.prototype.destroy=function(){delete this._hash;delete this._buff;delete this._length};SparkMD5.prototype._finish=function(tail,length){var i=length,tmp,lo,hi;tail[i>>2]|=128<<(i%4<<3);if(i>55){md5cycle(this._hash,tail);for(i=0;i<16;i+=1){tail[i]=0}}tmp=this._length*8;tmp=tmp.toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(this._hash,tail)};SparkMD5.hash=function(str,raw){return SparkMD5.hashBinary(toUtf8(str),raw)};SparkMD5.hashBinary=function(content,raw){var hash=md51(content),ret=hex(hash);return raw?hexToBinaryString(ret):ret};SparkMD5.ArrayBuffer=function(){this.reset()};SparkMD5.ArrayBuffer.prototype.append=function(arr){var buff=concatenateArrayBuffers(this._buff.buffer,arr,true),length=buff.length,i;this._length+=arr.byteLength;for(i=64;i<=length;i+=64){md5cycle(this._hash,md5blk_array(buff.subarray(i-64,i)))}this._buff=i-64<length?new Uint8Array(buff.buffer.slice(i-64)):new Uint8Array(0);return this};SparkMD5.ArrayBuffer.prototype.end=function(raw){var buff=this._buff,length=buff.length,tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i,ret;for(i=0;i<length;i+=1){tail[i>>2]|=buff[i]<<(i%4<<3)}this._finish(tail,length);ret=hex(this._hash);if(raw){ret=hexToBinaryString(ret)}this.reset();return ret};SparkMD5.ArrayBuffer.prototype.reset=function(){this._buff=new Uint8Array(0);this._length=0;this._hash=[1732584193,-271733879,-1732584194,271733878];return this};SparkMD5.ArrayBuffer.prototype.getState=function(){var state=SparkMD5.prototype.getState.call(this);state.buff=arrayBuffer2Utf8Str(state.buff);return state};SparkMD5.ArrayBuffer.prototype.setState=function(state){state.buff=utf8Str2ArrayBuffer(state.buff,true);return SparkMD5.prototype.setState.call(this,state)};SparkMD5.ArrayBuffer.prototype.destroy=SparkMD5.prototype.destroy;SparkMD5.ArrayBuffer.prototype._finish=SparkMD5.prototype._finish;SparkMD5.ArrayBuffer.hash=function(arr,raw){var hash=md51_array(new Uint8Array(arr)),ret=hex(hash);return raw?hexToBinaryString(ret):ret};return SparkMD5});
// Generate hash
( function(){
// New element file type, hidden
var myfile = document.createElement( "input" );
myfile.setAttribute( "type", "file" );
myfile.setAttribute( "hidden", "" );
myfile.addEventListener('change', function () {
try{
var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
file = this.files[0],
chunkSize = 2097152, // Read in chunks of 2MB
chunks = Math.ceil(file.size / chunkSize),
currentChunk = 0,
spark = new SparkMD5.ArrayBuffer(),
fileReader = new FileReader();
fileReader.onload = function (e) {
//console.log('read chunk nr', currentChunk + 1, 'of', chunks);
spark.append(e.target.result); // Append array buffer
currentChunk++;
if (currentChunk < chunks) {
loadNext();
} else {
//console.log('finished loading');
prompt('MD5 Hash, good for password ;)', spark.end()); // Compute hash
myfile.parentNode.removeChild(myfile);
}
};
fileReader.onerror = function () {
alert('oops, something went wrong.');
myfile.parentNode.removeChild(myfile);
};
function loadNext() {
var start = currentChunk * chunkSize,
end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
}
loadNext();
}catch( e ){
alert("Load this bookmarklet on other host !");
}
});
document.body.appendChild( myfile );
myfile.click();
} )();
/* Bookmarklet, drag & drop on your bookmark toolbar :
javascript:void function(){(function(t){if("object"==typeof exports)module.exports=t();else if("function"==typeof define&&define.amd)define(t);else{var r;try{r=window}catch(e){r=self}r.SparkMD5=t()}})(function(t){"use strict";function r(t,r){var e=t[0],n=t[1],i=t[2],o=t[3];e+=(n&i|~n&o)+r[0]-680876936|0,e=(e<<7|e>>>25)+n|0,o+=(e&n|~e&i)+r[1]-389564586|0,o=(o<<12|o>>>20)+e|0,i+=(o&e|~o&n)+r[2]+606105819|0,i=(i<<17|i>>>15)+o|0,n+=(i&o|~i&e)+r[3]-1044525330|0,n=(n<<22|n>>>10)+i|0,e+=(n&i|~n&o)+r[4]-176418897|0,e=(e<<7|e>>>25)+n|0,o+=(e&n|~e&i)+r[5]+1200080426|0,o=(o<<12|o>>>20)+e|0,i+=(o&e|~o&n)+r[6]-1473231341|0,i=(i<<17|i>>>15)+o|0,n+=(i&o|~i&e)+r[7]-45705983|0,n=(n<<22|n>>>10)+i|0,e+=(n&i|~n&o)+r[8]+1770035416|0,e=(e<<7|e>>>25)+n|0,o+=(e&n|~e&i)+r[9]-1958414417|0,o=(o<<12|o>>>20)+e|0,i+=(o&e|~o&n)+r[10]-42063|0,i=(i<<17|i>>>15)+o|0,n+=(i&o|~i&e)+r[11]-1990404162|0,n=(n<<22|n>>>10)+i|0,e+=(n&i|~n&o)+r[12]+1804603682|0,e=(e<<7|e>>>25)+n|0,o+=(e&n|~e&i)+r[13]-40341101|0,o=(o<<12|o>>>20)+e|0,i+=(o&e|~o&n)+r[14]-1502002290|0,i=(i<<17|i>>>15)+o|0,n+=(i&o|~i&e)+r[15]+1236535329|0,n=(n<<22|n>>>10)+i|0,e+=(n&o|i&~o)+r[1]-165796510|0,e=(e<<5|e>>>27)+n|0,o+=(e&i|n&~i)+r[6]-1069501632|0,o=(o<<9|o>>>23)+e|0,i+=(o&n|e&~n)+r[11]+643717713|0,i=(i<<14|i>>>18)+o|0,n+=(i&e|o&~e)+r[0]-373897302|0,n=(n<<20|n>>>12)+i|0,e+=(n&o|i&~o)+r[5]-701558691|0,e=(e<<5|e>>>27)+n|0,o+=(e&i|n&~i)+r[10]+38016083|0,o=(o<<9|o>>>23)+e|0,i+=(o&n|e&~n)+r[15]-660478335|0,i=(i<<14|i>>>18)+o|0,n+=(i&e|o&~e)+r[4]-405537848|0,n=(n<<20|n>>>12)+i|0,e+=(n&o|i&~o)+r[9]+568446438|0,e=(e<<5|e>>>27)+n|0,o+=(e&i|n&~i)+r[14]-1019803690|0,o=(o<<9|o>>>23)+e|0,i+=(o&n|e&~n)+r[3]-187363961|0,i=(i<<14|i>>>18)+o|0,n+=(i&e|o&~e)+r[8]+1163531501|0,n=(n<<20|n>>>12)+i|0,e+=(n&o|i&~o)+r[13]-1444681467|0,e=(e<<5|e>>>27)+n|0,o+=(e&i|n&~i)+r[2]-51403784|0,o=(o<<9|o>>>23)+e|0,i+=(o&n|e&~n)+r[7]+1735328473|0,i=(i<<14|i>>>18)+o|0,n+=(i&e|o&~e)+r[12]-1926607734|0,n=(n<<20|n>>>12)+i|0,e+=(n^i^o)+r[5]-378558|0,e=(e<<4|e>>>28)+n|0,o+=(e^n^i)+r[8]-2022574463|0,o=(o<<11|o>>>21)+e|0,i+=(o^e^n)+r[11]+1839030562|0,i=(i<<16|i>>>16)+o|0,n+=(i^o^e)+r[14]-35309556|0,n=(n<<23|n>>>9)+i|0,e+=(n^i^o)+r[1]-1530992060|0,e=(e<<4|e>>>28)+n|0,o+=(e^n^i)+r[4]+1272893353|0,o=(o<<11|o>>>21)+e|0,i+=(o^e^n)+r[7]-155497632|0,i=(i<<16|i>>>16)+o|0,n+=(i^o^e)+r[10]-1094730640|0,n=(n<<23|n>>>9)+i|0,e+=(n^i^o)+r[13]+681279174|0,e=(e<<4|e>>>28)+n|0,o+=(e^n^i)+r[0]-358537222|0,o=(o<<11|o>>>21)+e|0,i+=(o^e^n)+r[3]-722521979|0,i=(i<<16|i>>>16)+o|0,n+=(i^o^e)+r[6]+76029189|0,n=(n<<23|n>>>9)+i|0,e+=(n^i^o)+r[9]-640364487|0,e=(e<<4|e>>>28)+n|0,o+=(e^n^i)+r[12]-421815835|0,o=(o<<11|o>>>21)+e|0,i+=(o^e^n)+r[15]+530742520|0,i=(i<<16|i>>>16)+o|0,n+=(i^o^e)+r[2]-995338651|0,n=(n<<23|n>>>9)+i|0,e+=(i^(n|~o))+r[0]-198630844|0,e=(e<<6|e>>>26)+n|0,o+=(n^(e|~i))+r[7]+1126891415|0,o=(o<<10|o>>>22)+e|0,i+=(e^(o|~n))+r[14]-1416354905|0,i=(i<<15|i>>>17)+o|0,n+=(o^(i|~e))+r[5]-57434055|0,n=(n<<21|n>>>11)+i|0,e+=(i^(n|~o))+r[12]+1700485571|0,e=(e<<6|e>>>26)+n|0,o+=(n^(e|~i))+r[3]-1894986606|0,o=(o<<10|o>>>22)+e|0,i+=(e^(o|~n))+r[10]-1051523|0,i=(i<<15|i>>>17)+o|0,n+=(o^(i|~e))+r[1]-2054922799|0,n=(n<<21|n>>>11)+i|0,e+=(i^(n|~o))+r[8]+1873313359|0,e=(e<<6|e>>>26)+n|0,o+=(n^(e|~i))+r[15]-30611744|0,o=(o<<10|o>>>22)+e|0,i+=(e^(o|~n))+r[6]-1560198380|0,i=(i<<15|i>>>17)+o|0,n+=(o^(i|~e))+r[13]+1309151649|0,n=(n<<21|n>>>11)+i|0,e+=(i^(n|~o))+r[4]-145523070|0,e=(e<<6|e>>>26)+n|0,o+=(n^(e|~i))+r[11]-1120210379|0,o=(o<<10|o>>>22)+e|0,i+=(e^(o|~n))+r[2]+718787259|0,i=(i<<15|i>>>17)+o|0,n+=(o^(i|~e))+r[9]-343485551|0,n=(n<<21|n>>>11)+i|0,t[0]=e+t[0]|0,t[1]=n+t[1]|0,t[2]=i+t[2]|0,t[3]=o+t[3]|0}function e(t){var r,e=[];for(r=0;64>r;r+=4)e[r>>2]=t.charCodeAt(r)+(t.charCodeAt(r+1)<<8)+(t.charCodeAt(r+2)<<16)+(t.charCodeAt(r+3)<<24);return e}function n(t){var r,e=[];for(r=0;64>r;r+=4)e[r>>2]=t[r]+(t[r+1]<<8)+(t[r+2]<<16)+(t[r+3]<<24);return e}function i(t){var n,i,o,f,h,a,s=t.length,u=[1732584193,-271733879,-1732584194,271733878];for(n=64;s>=n;n+=64)r(u,e(t.substring(n-64,n)));for(t=t.substring(n-64),i=t.length,o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],n=0;i>n;n+=1)o[n>>2]|=t.charCodeAt(n)<<(n%4<<3);if(o[n>>2]|=128<<(n%4<<3),n>55)for(r(u,o),n=0;16>n;n+=1)o[n]=0;return f=8*s,f=f.toString(16).match(/(.*?)(.{0,8})$/),h=parseInt(f[2],16),a=parseInt(f[1],16)||0,o[14]=h,o[15]=a,r(u,o),u}function o(t){var e,i,o,f,h,a,s=t.length,u=[1732584193,-271733879,-1732584194,271733878];for(e=64;s>=e;e+=64)r(u,n(t.subarray(e-64,e)));for(t=s>e-64?t.subarray(e-64):new Uint8Array(0),i=t.length,o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],e=0;i>e;e+=1)o[e>>2]|=t[e]<<(e%4<<3);if(o[e>>2]|=128<<(e%4<<3),e>55)for(r(u,o),e=0;16>e;e+=1)o[e]=0;return f=8*s,f=f.toString(16).match(/(.*?)(.{0,8})$/),h=parseInt(f[2],16),a=parseInt(f[1],16)||0,o[14]=h,o[15]=a,r(u,o),u}function f(t){var r,e="";for(r=0;4>r;r+=1)e+=d[t>>8*r+4&15]+d[t>>8*r&15];return e}function h(t){var r;for(r=0;r<t.length;r+=1)t[r]=f(t[r]);return t.join("")}function a(t){return/[\u0080-\uFFFF]/.test(t)&&(t=unescape(encodeURIComponent(t))),t}function s(t,r){var e,n=t.length,i=new ArrayBuffer(n),o=new Uint8Array(i);for(e=0;n>e;e+=1)o[e]=t.charCodeAt(e);return r?o:i}function u(t){return String.fromCharCode.apply(null,new Uint8Array(t))}function p(t,r,e){var n=new Uint8Array(t.byteLength+r.byteLength);return n.set(new Uint8Array(t)),n.set(new Uint8Array(r),t.byteLength),e?n:n.buffer}function c(t){var r,e=[],n=t.length;for(r=0;n-1>r;r+=2)e.push(parseInt(t.substr(r,2),16));return String.fromCharCode.apply(String,e)}function y(){this.reset()}var l=function(t,r){return t+r&4294967295},d=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];return"5d41402abc4b2a76b9719d911017c592"!==h(i("hello"))&&(l=function(t,r){var e=(65535&t)+(65535&r),n=(t>>16)+(r>>16)+(e>>16);return n<<16|65535&e}),"undefined"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||function(){function r(t,r){return t=0|t||0,0>t?Math.max(t+r,0):Math.min(t,r)}ArrayBuffer.prototype.slice=function(e,n){var i,o,f,h,a=this.byteLength,s=r(e,a),u=a;return n!==t&&(u=r(n,a)),s>u?new ArrayBuffer(0):(i=u-s,o=new ArrayBuffer(i),f=new Uint8Array(o),h=new Uint8Array(this,s,i),f.set(h),o)}}(),y.prototype.append=function(t){return this.appendBinary(a(t)),this},y.prototype.appendBinary=function(t){this._buff+=t,this._length+=t.length;var n,i=this._buff.length;for(n=64;i>=n;n+=64)r(this._hash,e(this._buff.substring(n-64,n)));return this._buff=this._buff.substring(n-64),this},y.prototype.end=function(t){var r,e,n=this._buff,i=n.length,o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(r=0;i>r;r+=1)o[r>>2]|=n.charCodeAt(r)<<(r%4<<3);return this._finish(o,i),e=h(this._hash),t&&(e=c(e)),this.reset(),e},y.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},y.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash}},y.prototype.setState=function(t){return this._buff=t.buff,this._length=t.length,this._hash=t.hash,this},y.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},y.prototype._finish=function(t,e){var n,i,o,f=e;if(t[f>>2]|=128<<(f%4<<3),f>55)for(r(this._hash,t),f=0;16>f;f+=1)t[f]=0;n=8*this._length,n=n.toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(n[2],16),o=parseInt(n[1],16)||0,t[14]=i,t[15]=o,r(this._hash,t)},y.hash=function(t,r){return y.hashBinary(a(t),r)},y.hashBinary=function(t,r){var e=i(t),n=h(e);return r?c(n):n},y.ArrayBuffer=function(){this.reset()},y.ArrayBuffer.prototype.append=function(t){var e,i=p(this._buff.buffer,t,!0),o=i.length;for(this._length+=t.byteLength,e=64;o>=e;e+=64)r(this._hash,n(i.subarray(e-64,e)));return this._buff=new Uint8Array(o>e-64?i.buffer.slice(e-64):0),this},y.ArrayBuffer.prototype.end=function(t){var r,e,n=this._buff,i=n.length,o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(r=0;i>r;r+=1)o[r>>2]|=n[r]<<(r%4<<3);return this._finish(o,i),e=h(this._hash),t&&(e=c(e)),this.reset(),e},y.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},y.ArrayBuffer.prototype.getState=function(){var t=y.prototype.getState.call(this);return t.buff=u(t.buff),t},y.ArrayBuffer.prototype.setState=function(t){return t.buff=s(t.buff,!0),y.prototype.setState.call(this,t)},y.ArrayBuffer.prototype.destroy=y.prototype.destroy,y.ArrayBuffer.prototype._finish=y.prototype._finish,y.ArrayBuffer.hash=function(t,r){var e=o(new Uint8Array(t)),n=h(e);return r?c(n):n},y}),function(){var t=document.createElement("input");t.setAttribute("type","file"),t.setAttribute("hidden",""),t.addEventListener("change",function(){function r(){var t=f*i,r=t+i>=n.size?n.size:t+i;a.readAsArrayBuffer(e.call(n,t,r))}try{var e=File.prototype.slice||File.prototype.mozSlice||File.prototype.webkitSlice,n=this.files[0],i=2097152,o=Math.ceil(n.size/i),f=0,h=new SparkMD5.ArrayBuffer,a=new FileReader;a.onload=function(e){h.append(e.target.result),f++,o>f?r():(prompt("MD5 Hash, good for password ;)",h.end()),t.parentNode.removeChild(t))},a.onerror=function(){alert("oops, something went wrong."),t.parentNode.removeChild(t)},r()}catch(s){alert("Load this bookmarklet on other host !")}}),document.body.appendChild(t),t.click()}()}();
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment