forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			36 lines
		
	
	
		
			981 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			981 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var OFFCRYPTO = {};
							 | 
						||
| 
								 | 
							
								var make_offcrypto = function(O, _crypto) {
							 | 
						||
| 
								 | 
							
									var crypto;
							 | 
						||
| 
								 | 
							
									if(typeof _crypto !== 'undefined') crypto = _crypto;
							 | 
						||
| 
								 | 
							
									else if(typeof require !== 'undefined') {
							 | 
						||
| 
								 | 
							
										try { crypto = require('cry'+'pto'); }
							 | 
						||
| 
								 | 
							
										catch(e) { crypto = null; }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									O.rc4 = function(key, data) {
							 | 
						||
| 
								 | 
							
										var S = new Array(256);
							 | 
						||
| 
								 | 
							
										var c = 0, i = 0, j = 0, t = 0;
							 | 
						||
| 
								 | 
							
										for(i = 0; i != 256; ++i) S[i] = i;
							 | 
						||
| 
								 | 
							
										for(i = 0; i != 256; ++i) {
							 | 
						||
| 
								 | 
							
											j = (j + S[i] + (key[i%key.length]).charCodeAt(0))&255;
							 | 
						||
| 
								 | 
							
											t = S[i]; S[i] = S[j]; S[j] = t;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										i = j = 0; out = Buffer(data.length);
							 | 
						||
| 
								 | 
							
										for(c = 0; c != data.length; ++c) {
							 | 
						||
| 
								 | 
							
											i = (i + 1)&255;
							 | 
						||
| 
								 | 
							
											j = (j + S[i])%256;
							 | 
						||
| 
								 | 
							
											t = S[i]; S[i] = S[j]; S[j] = t;
							 | 
						||
| 
								 | 
							
											out[c] = (data[c] ^ S[(S[i]+S[j])&255]);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return out;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if(crypto) {
							 | 
						||
| 
								 | 
							
										O.md5 = function(hex) { return crypto.createHash('md5').update(hex).digest('hex'); };
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										O.md5 = function(hex) { throw "unimplemented"; };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								make_offcrypto(OFFCRYPTO, typeof crypto !== "undefined" ? crypto : undefined);
							 | 
						||
| 
								 | 
							
								
							 |