49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								;(function (root, factory, undef) {
							 | 
						||
| 
								 | 
							
									if (typeof exports === "object") {
							 | 
						||
| 
								 | 
							
										// CommonJS
							 | 
						||
| 
								 | 
							
										module.exports = exports = factory(require("./core"), require("./cipher-core"));
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if (typeof define === "function" && define.amd) {
							 | 
						||
| 
								 | 
							
										// AMD
							 | 
						||
| 
								 | 
							
										define(["./core", "./cipher-core"], factory);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else {
							 | 
						||
| 
								 | 
							
										// Global (browser)
							 | 
						||
| 
								 | 
							
										factory(root.CryptoJS);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}(this, function (CryptoJS) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * ANSI X.923 padding strategy.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									CryptoJS.pad.AnsiX923 = {
							 | 
						||
| 
								 | 
							
									    pad: function (data, blockSize) {
							 | 
						||
| 
								 | 
							
									        // Shortcuts
							 | 
						||
| 
								 | 
							
									        var dataSigBytes = data.sigBytes;
							 | 
						||
| 
								 | 
							
									        var blockSizeBytes = blockSize * 4;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        // Count padding bytes
							 | 
						||
| 
								 | 
							
									        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        // Compute last byte position
							 | 
						||
| 
								 | 
							
									        var lastBytePos = dataSigBytes + nPaddingBytes - 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        // Pad
							 | 
						||
| 
								 | 
							
									        data.clamp();
							 | 
						||
| 
								 | 
							
									        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
							 | 
						||
| 
								 | 
							
									        data.sigBytes += nPaddingBytes;
							 | 
						||
| 
								 | 
							
									    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    unpad: function (data) {
							 | 
						||
| 
								 | 
							
									        // Get number of padding bytes from last byte
							 | 
						||
| 
								 | 
							
									        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        // Remove padding
							 | 
						||
| 
								 | 
							
									        data.sigBytes -= nPaddingBytes;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return CryptoJS.pad.Ansix923;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}));
							 |