PageSourceSearch

https://ehall.boustead.edu.cn/new/resources/js/jquery.jcryption-1.1.js

js boustead.edu.cn collected 2026-10-05 01:54:22 UTC 18,522 bytes, 737 lines download raw bytes

1/*
2* jCryption JavaScript data encryption v1.1
3* http://www.jcryption.org/
4*
5* Copyright (c) 2010 Daniel Griesser
6* Dual licensed under the MIT and GPL licenses.
7* http://www.opensource.org/licenses/mit-license.php
8* http://www.opensource.org/licenses/gpl-2.0.php
9*
10* If you need any further information about this plugin please
11* visit my homepage or contact me under [email protected]
12*/
13(function($) {
14	$.jCryption = function(el, options) {
15		var base = this;
16		
17		base.$el = $(el);
18		base.el = el;
19
20		base.$el.data("jCryption", base);
21		base.init = function() {
22
23			base.options = $.extend({},$.jCryption.defaultOptions, options);
24
25			$encryptedElement = $("<input />",{
26				type:'hidden',
27				name:base.options.postVariable
28			});
29
30			if (base.options.submitElement !== false) {
31				var $submitElement = base.options.submitElement;
32			} else {
33				var $submitElement = base.$el.find(":input:submit");
34			}
35
36			$submitElement.bind(base.options.submitEvent,function() {
37				$(this).attr("disabled",true);
38				if(base.options.beforeEncryption()) {
39					   $.jCryption.getKeys(base.options.getKeysURL,function(keys) {
40						   $.jCryption.encrypt(base.$el.serialize(),keys,function(encrypted) {
41						   	   $encryptedElement.val(encrypted);
42						   	   $(base.$el).find(":input").attr("disabled",true).end().append($encryptedElement).submit();
43						   });
44					   });
45				}
46				return false;
47			});
48
49		};
50
51		base.init();
52	};
53
54	$.jCryption.getKeys = function(url,callback) {
55		var base = this;
56		base.getKeys = function() {
57			/*$.getJSON(url,function(data){
58				console.log(data.e+"==="+data.n+"==="+data.maxdigits);
59				keys = new base.jCryptionKeyPair(data.e,data.n,data.maxdigits);
60				if($.isFunction(callback)) {
61					callback.call(this, keys);
62				}
63			});		*/	
64			$.ajax({
65                type: 'get',
66                url: url,
67                dataType: "jsonp",
68                jsonp: "amp_jsonp_callback",
69                cache: false,
70                success: function (data) {
71                	keys = new base.jCryptionKeyPair(data.e,data.n,data.maxdigits);
72    				if($.isFunction(callback)) {
73    					callback.call(this, keys);
74    				}
75                }
76                });
77		};
78
79		base.jCryptionKeyPair = function(encryptionExponent, modulus, maxdigits) {
80			setMaxDigits(parseInt(maxdigits,10));
81			this.e = biFromHex(encryptionExponent);
82			this.m = biFromHex(modulus);
83			this.chunkSize = 2 * biHighIndex(this.m);
84			this.radix = 16;
85			this.barrett = new BarrettMu(this.m);
86		};
87
88		base.getKeys();
89	};
90
91	$.jCryption.encrypt = function(string,keyPair,callback) {
92		var charSum = 0;
93		for(var i = 0; i < string.length; i++){
94			charSum += string.charCodeAt(i);
95		}
96		var tag = '0123456789abcdef';
97		var hex = '';
98		hex += tag.charAt((charSum & 0xF0) >> 4) + tag.charAt(charSum & 0x0F);
99
100		var taggedString = hex + string;
101
102		var encrypt = [];
103		var j = 0;
104
105		while (j < taggedString.length) {
106			encrypt[j] = taggedString.charCodeAt(j);
107			j++;
108		}
109
110		while (encrypt.length % keyPair.chunkSize !== 0) {
111			encrypt[j++] = 0;
112		}
113
114		function encryption(encryptObject) {
115			var charCounter = 0;
116			var j, block;
117			var encrypted = "";
118			function encryptChar() {
119				block = new BigInt();
120				j = 0;
121				for (var k = charCounter; k < charCounter+keyPair.chunkSize; ++j) {
122					block.digits[j] = encryptObject[k++];
123					block.digits[j] += encryptObject[k++] << 8;
124				}
125				var crypt = keyPair.barrett.powMod(block, keyPair.e);
126				var text = keyPair.radix == 16 ? biToHex(crypt) : biToString(crypt, keyPair.radix);
127				encrypted += text + " ";
128				charCounter += keyPair.chunkSize;
129				if (charCounter < encryptObject.length) {
130					setTimeout(encryptChar, 1)
131				} else {
132					var encryptedString = encrypted.substring(0, encrypted.length - 1);
133					if($.isFunction(callback)) {
134						callback(encryptedString);
135					} else {
136					 	return encryptedString;
137					}
138
139				}
140			}
141			setTimeout(encryptChar, 1);
142		}
143
144		encryption(encrypt);
145	};
146
147	$.jCryption.defaultOptions = {
148		submitElement:false,
149		submitEvent:"click",
150		getKeysURL:"EncryptionServlet?generateKeypair=true",
151		beforeEncryption:function(){return true},
152		postVariable:"jCryption"
153	};
154
155	$.fn.jCryption = function(options) {
156		return this.each(function(){
157			(new $.jCryption(this, options));
158		});
159	};
160
161})(jQuery);
162
163/*
164* BigInt, a suite of routines for performing multiple-precision arithmetic in
165* JavaScript.
166* BarrettMu, a class for performing Barrett modular reduction computations in
167* JavaScript.
168*
169*
170* Copyright 1998-2005 David Shapiro.
171* [email protected]
172*
173* changed and improved by Daniel Griesser
174* http://www.jcryption.org/
175* Daniel Griesser <[email protected]>
176*/
177var biRadixBase = 2;
178var biRadixBits = 16;
179var bitsPerDigit = biRadixBits;
180var biRadix = 1 << 16;
181var biHalfRadix = biRadix >>> 1;
182var biRadixSquared = biRadix * biRadix;
183var maxDigitVal = biRadix - 1;
184var maxInteger = 9999999999999998;
185var maxDigits;
186var ZERO_ARRAY;
187var bigZero, bigOne;
188var dpl10 = 15;
189var highBitMasks = new Array(0x0000, 0x8000, 0xC000, 0xE000, 0xF000, 0xF800,
1900xFC00, 0xFE00, 0xFF00, 0xFF80, 0xFFC0, 0xFFE0,
1910xFFF0, 0xFFF8, 0xFFFC, 0xFFFE, 0xFFFF);
192
193var hexatrigesimalToChar = new Array(
194'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
195'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
196'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
197'u', 'v', 'w', 'x', 'y', 'z'
198);
199
200var hexToChar = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
201'a', 'b', 'c', 'd', 'e', 'f');
202
203var lowBitMasks = new Array(0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F,
2040x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,
2050x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF);
206
207function setMaxDigits(value) {
208	maxDigits = value;
209	ZERO_ARRAY = new Array(maxDigits);
210	for (var iza = 0; iza < ZERO_ARRAY.length; iza++) ZERO_ARRAY[iza] = 0;
211	bigZero = new BigInt();
212	bigOne = new BigInt();
213	bigOne.digits[0] = 1;
214}
215
216function BigInt(flag) {
217	if (typeof flag == "boolean" && flag == true) {
218		this.digits = null;
219	}
220	else {
221		this.digits = ZERO_ARRAY.slice(0);
222	}
223	this.isNeg = false;
224}
225
226function biFromDecimal(s) {
227	var isNeg = s.charAt(0) == '-';
228	var i = isNeg ? 1 : 0;
229	var result;
230	while (i < s.length && s.charAt(i) == '0') ++i;
231	if (i == s.length) {
232		result = new BigInt();
233	}
234	else {
235		var digitCount = s.length - i;
236		var fgl = digitCount % dpl10;
237		if (fgl == 0) fgl = dpl10;
238		result = biFromNumber(Number(s.substr(i, fgl)));
239		i += fgl;
240		while (i < s.length) {
241			result = biAdd(biMultiply(result, biFromNumber(1000000000000000)),
242			biFromNumber(Number(s.substr(i, dpl10))));
243			i += dpl10;
244		}
245		result.isNeg = isNeg;
246	}
247	return result;
248}
249
250function biCopy(bi) {
251	var result = new BigInt(true);
252	result.digits = bi.digits.slice(0);
253	result.isNeg = bi.isNeg;
254	return result;
255}
256
257function biFromNumber(i) {
258	var result = new BigInt();
259	result.isNeg = i < 0;
260	i = Math.abs(i);
261	var j = 0;
262	while (i > 0) {
263		result.digits[j++] = i & maxDigitVal;
264		i >>= biRadixBits;
265	}
266	return result;
267}
268
269function reverseStr(s) {
270	var result = "";
271	for (var i = s.length - 1; i > -1; --i) {
272		result += s.charAt(i);
273	}
274	return result;
275}
276
277function biToString(x, radix) {
278	var b = new BigInt();
279	b.digits[0] = radix;
280	var qr = biDivideModulo(x, b);
281	var result = hexatrigesimalToChar[qr[1].digits[0]];
282	while (biCompare(qr[0], bigZero) == 1) {
283		qr = biDivideModulo(qr[0], b);
284		digit = qr[1].digits[0];
285		result += hexatrigesimalToChar[qr[1].digits[0]];
286	}
287	return (x.isNeg ? "-" : "") + reverseStr(result);
288}
289
290function biToDecimal(x) {
291	var b = new BigInt();
292	b.digits[0] = 10;
293	var qr = biDivideModulo(x, b);
294	var result = String(qr[1].digits[0]);
295	while (biCompare(qr[0], bigZero) == 1) {
296		qr = biDivideModulo(qr[0], b);
297		result += String(qr[1].digits[0]);
298	}
299	return (x.isNeg ? "-" : "") + reverseStr(result);
300}
301
302function digitToHex(n) {
303	var mask = 0xf;
304	var result = "";
305	for (i = 0; i < 4; ++i) {
306		result += hexToChar[n & mask];
307		n >>>= 4;
308	}
309	return reverseStr(result);
310}
311
312function biToHex(x) {
313	var result = "";
314	var n = biHighIndex(x);
315	for (var i = biHighIndex(x); i > -1; --i) {
316		result += digitToHex(x.digits[i]);
317	}
318	return result;
319}
320
321function charToHex(c) {
322	var ZERO = 48;
323	var NINE = ZERO + 9;
324	var littleA = 97;
325	var littleZ = littleA + 25;
326	var bigA = 65;
327	var bigZ = 65 + 25;
328	var result;
329
330	if (c >= ZERO && c <= NINE) {
331		result = c - ZERO;
332	} else if (c >= bigA && c <= bigZ) {
333		result = 10 + c - bigA;
334	} else if (c >= littleA && c <= littleZ) {
335		result = 10 + c - littleA;
336	} else {
337		result = 0;
338	}
339	return result;
340}
341
342function hexToDigit(s) {
343	var result = 0;
344	var sl = Math.min(s.length, 4);
345	for (var i = 0; i < sl; ++i) {
346		result <<= 4;
347		result |= charToHex(s.charCodeAt(i))
348	}
349	return result;
350}
351
352function biFromHex(s) {
353	var result = new BigInt();
354	var sl = s.length;
355	for (var i = sl, j = 0; i > 0; i -= 4, ++j) {
356		result.digits[j] = hexToDigit(s.substr(Math.max(i - 4, 0), Math.min(i, 4)));
357	}
358	return result;
359}
360
361function biFromString(s, radix) {
362	var isNeg = s.charAt(0) == '-';
363	var istop = isNeg ? 1 : 0;
364	var result = new BigInt();
365	var place = new BigInt();
366	place.digits[0] = 1; // radix^0
367	for (var i = s.length - 1; i >= istop; i--) {
368		var c = s.charCodeAt(i);
369		var digit = charToHex(c);
370		var biDigit = biMultiplyDigit(place, digit);
371		result = biAdd(result, biDigit);
372		place = biMultiplyDigit(place, radix);
373	}
374	result.isNeg = isNeg;
375	return result;
376}
377
378function biDump(b) {
379	return (b.isNeg ? "-" : "") + b.digits.join(" ");
380}
381
382function biAdd(x, y) {
383	var result;
384
385	if (x.isNeg != y.isNeg) {
386		y.isNeg = !y.isNeg;
387		result = biSubtract(x, y);
388		y.isNeg = !y.isNeg;
389	}
390	else {
391		result = new BigInt();
392		var c = 0;
393		var n;
394		for (var i = 0; i < x.digits.length; ++i) {
395			n = x.digits[i] + y.digits[i] + c;
396			result.digits[i] = n & 0xffff;
397			c = Number(n >= biRadix);
398		}
399		result.isNeg = x.isNeg;
400	}
401	return result;
402}
403
404function biSubtract(x, y) {
405	var result;
406	if (x.isNeg != y.isNeg) {
407		y.isNeg = !y.isNeg;
408		result = biAdd(x, y);
409		y.isNeg = !y.isNeg;
410	} else {
411		result = new BigInt();
412		var n, c;
413		c = 0;
414		for (var i = 0; i < x.digits.length; ++i) {
415			n = x.digits[i] - y.digits[i] + c;
416			result.digits[i] = n & 0xffff;
417			if (result.digits[i] < 0) result.digits[i] += biRadix;
418			c = 0 - Number(n < 0);
419		}
420		if (c == -1) {
421			c = 0;
422			for (var i = 0; i < x.digits.length; ++i) {
423				n = 0 - result.digits[i] + c;
424				result.digits[i] = n & 0xffff;
425				if (result.digits[i] < 0) result.digits[i] += biRadix;
426				c = 0 - Number(n < 0);
427			}
428			result.isNeg = !x.isNeg;
429		} else {
430			result.isNeg = x.isNeg;
431		}
432	}
433	return result;
434}
435
436function biHighIndex(x) {
437	var result = x.digits.length - 1;
438	while (result > 0 && x.digits[result] == 0) --result;
439	return result;
440}
441
442function biNumBits(x) {
443	var n = biHighIndex(x);
444	var d = x.digits[n];
445	var m = (n + 1) * bitsPerDigit;
446	var result;
447	for (result = m; result > m - bitsPerDigit; --result) {
448		if ((d & 0x8000) != 0) break;
449		d <<= 1;
450	}
451	return result;
452}
453
454function biMultiply(x, y) {
455	var result = new BigInt();
456	var c;
457	var n = biHighIndex(x);
458	var t = biHighIndex(y);
459	var u, uv, k;
460
461	for (var i = 0; i <= t; ++i) {
462		c = 0;
463		k = i;
464		for (j = 0; j <= n; ++j, ++k) {
465			uv = result.digits[k] + x.digits[j] * y.digits[i] + c;
466			result.digits[k] = uv & maxDigitVal;
467			c = uv >>> biRadixBits;
468		}
469		result.digits[i + n + 1] = c;
470	}
471	result.isNeg = x.isNeg != y.isNeg;
472	return result;
473}
474
475function biMultiplyDigit(x, y) {
476	var n, c, uv;
477
478	result = new BigInt();
479	n = biHighIndex(x);
480	c = 0;
481	for (var j = 0; j <= n; ++j) {
482		uv = result.digits[j] + x.digits[j] * y + c;
483		result.digits[j] = uv & maxDigitVal;
484		c = uv >>> biRadixBits;
485	}
486	result.digits[1 + n] = c;
487	return result;
488}
489
490function arrayCopy(src, srcStart, dest, destStart, n) {
491	var m = Math.min(srcStart + n, src.length);
492	for (var i = srcStart, j = destStart; i < m; ++i, ++j) {
493		dest[j] = src[i];
494	}
495}
496
497
498
499function biShiftLeft(x, n) {
500	var digitCount = Math.floor(n / bitsPerDigit);
501	var result = new BigInt();
502	arrayCopy(x.digits, 0, result.digits, digitCount,result.digits.length - digitCount);
503	var bits = n % bitsPerDigit;
504	var rightBits = bitsPerDigit - bits;
505	for (var i = result.digits.length - 1, i1 = i - 1; i > 0; --i, --i1) {
506		result.digits[i] = ((result.digits[i] << bits) & maxDigitVal) |
507		((result.digits[i1] & highBitMasks[bits]) >>>
508		(rightBits));
509	}
510	result.digits[0] = ((result.digits[i] << bits) & maxDigitVal);
511	result.isNeg = x.isNeg;
512	return result;
513}
514
515function biShiftRight(x, n) {
516	var digitCount = Math.floor(n / bitsPerDigit);
517	var result = new BigInt();
518	arrayCopy(x.digits, digitCount, result.digits, 0,x.digits.length - digitCount);
519	var bits = n % bitsPerDigit;
520	var leftBits = bitsPerDigit - bits;
521	for (var i = 0, i1 = i + 1; i < result.digits.length - 1; ++i, ++i1) {
522		result.digits[i] = (result.digits[i] >>> bits) |
523		((result.digits[i1] & lowBitMasks[bits]) << leftBits);
524	}
525	result.digits[result.digits.length - 1] >>>= bits;
526	result.isNeg = x.isNeg;
527	return result;
528}
529
530function biMultiplyByRadixPower(x, n) {
531	var result = new BigInt();
532	arrayCopy(x.digits, 0, result.digits, n, result.digits.length - n);
533	return result;
534}
535
536function biDivideByRadixPower(x, n)
537{
538	var result = new BigInt();
539	arrayCopy(x.digits, n, result.digits, 0, result.digits.length - n);
540	return result;
541}
542
543function biModuloByRadixPower(x, n)
544{
545	var result = new BigInt();
546	arrayCopy(x.digits, 0, result.digits, 0, n);
547	return result;
548}
549
550function biCompare(x, y) {
551	if (x.isNeg != y.isNeg) {
552		return 1 - 2 * Number(x.isNeg);
553	}
554	for (var i = x.digits.length - 1; i >= 0; --i) {
555		if (x.digits[i] != y.digits[i]) {
556			if (x.isNeg) {
557				return 1 - 2 * Number(x.digits[i] > y.digits[i]);
558			} else {
559				return 1 - 2 * Number(x.digits[i] < y.digits[i]);
560			}
561		}
562	}
563	return 0;
564}
565
566function biDivideModulo(x, y) {
567	var nb = biNumBits(x);
568	var tb = biNumBits(y);
569	var origYIsNeg = y.isNeg;
570	var q, r;
571	if (nb < tb) {
572		if (x.isNeg) {
573			q = biCopy(bigOne);
574			q.isNeg = !y.isNeg;
575			x.isNeg = false;
576			y.isNeg = false;
577			r = biSubtract(y, x);
578			x.isNeg = true;
579			y.isNeg = origYIsNeg;
580		} else {
581			q = new BigInt();
582			r = biCopy(x);
583		}
584		return new Array(q, r);
585	}
586
587	q = new BigInt();
588	r = x;
589
590	var t = Math.ceil(tb / bitsPerDigit) - 1;
591	var lambda = 0;
592	while (y.digits[t] < biHalfRadix) {
593		y = biShiftLeft(y, 1);
594		++lambda;
595		++tb;
596		t = Math.ceil(tb / bitsPerDigit) - 1;
597	}
598
599	r = biShiftLeft(r, lambda);
600	nb += lambda;
601	var n = Math.ceil(nb / bitsPerDigit) - 1;
602
603	var b = biMultiplyByRadixPower(y, n - t);
604	while (biCompare(r, b) != -1) {
605		++q.digits[n - t];
606		r = biSubtract(r, b);
607	}
608	for (var i = n; i > t; --i) {
609		var ri = (i >= r.digits.length) ? 0 : r.digits[i];
610		var ri1 = (i - 1 >= r.digits.length) ? 0 : r.digits[i - 1];
611		var ri2 = (i - 2 >= r.digits.length) ? 0 : r.digits[i - 2];
612		var yt = (t >= y.digits.length) ? 0 : y.digits[t];
613		var yt1 = (t - 1 >= y.digits.length) ? 0 : y.digits[t - 1];
614		if (ri == yt) {
615			q.digits[i - t - 1] = maxDigitVal;
616		} else {
617			q.digits[i - t - 1] = Math.floor((ri * biRadix + ri1) / yt);
618		}
619
620		var c1 = q.digits[i - t - 1] * ((yt * biRadix) + yt1);
621		var c2 = (ri * biRadixSquared) + ((ri1 * biRadix) + ri2);
622		while (c1 > c2) {
623			--q.digits[i - t - 1];
624			c1 = q.digits[i - t - 1] * ((yt * biRadix) | yt1);
625			c2 = (ri * biRadix * biRadix) + ((ri1 * biRadix) + ri2);
626		}
627
628		b = biMultiplyByRadixPower(y, i - t - 1);
629		r = biSubtract(r, biMultiplyDigit(b, q.digits[i - t - 1]));
630		if (r.isNeg) {
631			r = biAdd(r, b);
632			--q.digits[i - t - 1];
633		}
634	}
635	r = biShiftRight(r, lambda);
636
637	q.isNeg = x.isNeg != origYIsNeg;
638	if (x.isNeg) {
639		if (origYIsNeg) {
640			q = biAdd(q, bigOne);
641		} else {
642			q = biSubtract(q, bigOne);
643		}
644		y = biShiftRight(y, lambda);
645		r = biSubtract(y, r);
646	}
647
648	if (r.digits[0] == 0 && biHighIndex(r) == 0) r.isNeg = false;
649
650	return new Array(q, r);
651}
652
653function biDivide(x, y) {
654	return biDivideModulo(x, y)[0];
655}
656
657function biModulo(x, y) {
658	return biDivideModulo(x, y)[1];
659}
660
661function biMultiplyMod(x, y, m) {
662	return biModulo(biMultiply(x, y), m);
663}
664
665function biPow(x, y) {
666	var result = bigOne;
667	var a = x;
668	while (true) {
669		if ((y & 1) != 0) result = biMultiply(result, a);
670		y >>= 1;
671		if (y == 0) break;
672		a = biMultiply(a, a);
673	}
674	return result;
675}
676
677function biPowMod(x, y, m) {
678	var result = bigOne;
679	var a = x;
680	var k = y;
681	while (true) {
682		if ((k.digits[0] & 1) != 0) result = biMultiplyMod(result, a, m);
683		k = biShiftRight(k, 1);
684		if (k.digits[0] == 0 && biHighIndex(k) == 0) break;
685		a = biMultiplyMod(a, a, m);
686	}
687	return result;
688}
689
690function BarrettMu(m) {
691	this.modulus = biCopy(m);
692	this.k = biHighIndex(this.modulus) + 1;
693	var b2k = new BigInt();
694	b2k.digits[2 * this.k] = 1;
695	this.mu = biDivide(b2k, this.modulus);
696	this.bkplus1 = new BigInt();
697	this.bkplus1.digits[this.k + 1] = 1;
698	this.modulo = BarrettMu_modulo;
699	this.multiplyMod = BarrettMu_multiplyMod;
700	this.powMod = BarrettMu_powMod;
701}
702
703function BarrettMu_modulo(x) {
704	var q1 = biDivideByRadixPower(x, this.k - 1);
705	var q2 = biMultiply(q1, this.mu);
706	var q3 = biDivideByRadixPower(q2, this.k + 1);
707	var r1 = biModuloByRadixPower(x, this.k + 1);
708	var r2term = biMultiply(q3, this.modulus);
709	var r2 = biModuloByRadixPower(r2term, this.k + 1);
710	var r = biSubtract(r1, r2);
711	if (r.isNeg) {
712		r = biAdd(r, this.bkplus1);
713	}
714	var rgtem = biCompare(r, this.modulus) >= 0;
715	while (rgtem) {
716		r = biSubtract(r, this.modulus);
717		rgtem = biCompare(r, this.modulus) >= 0;
718	}
719	return r;
720}
721
722function BarrettMu_multiplyMod(x, y) {
723	var xy = biMultiply(x, y);
724	return this.modulo(xy);
725}
726
727function BarrettMu_powMod(x, y) {
728	var result = new BigInt();
729	result.digits[0] = 1;
730	while (true) {
731		if ((y.digits[0] & 1) != 0) result = this.multiplyMod(result, x);
732		y = biShiftRight(y, 1);
733		if (y.digits[0] == 0 && biHighIndex(y) == 0) break;
734		x = this.multiplyMod(x, x);
735	}
736	return result;
737}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.