Show More
Commit Description:
fig bugs in login report
Commit Description:
fig bugs in login report
References:
File last commit:
Show/Diff file:
Action:
node_modules/crypto-js/mode-cfb.js
| 77 lines
| 2.0 KiB
| application/javascript
| JavascriptLexer
|
r789 | ;(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) { | |||
/** | |||
* Cipher Feedback block mode. | |||
*/ | |||
CryptoJS.mode.CFB = (function () { | |||
var CFB = CryptoJS.lib.BlockCipherMode.extend(); | |||
CFB.Encryptor = CFB.extend({ | |||
processBlock: function (words, offset) { | |||
// Shortcuts | |||
var cipher = this._cipher; | |||
var blockSize = cipher.blockSize; | |||
generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); | |||
// Remember this block to use with next block | |||
this._prevBlock = words.slice(offset, offset + blockSize); | |||
} | |||
}); | |||
CFB.Decryptor = CFB.extend({ | |||
processBlock: function (words, offset) { | |||
// Shortcuts | |||
var cipher = this._cipher; | |||
var blockSize = cipher.blockSize; | |||
// Remember this block to use with next block | |||
var thisBlock = words.slice(offset, offset + blockSize); | |||
generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); | |||
// This block becomes the previous block | |||
this._prevBlock = thisBlock; | |||
} | |||
}); | |||
function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { | |||
// Shortcut | |||
var iv = this._iv; | |||
// Generate keystream | |||
if (iv) { | |||
var keystream = iv.slice(0); | |||
// Remove IV for subsequent blocks | |||
this._iv = undefined; | |||
} else { | |||
var keystream = this._prevBlock; | |||
} | |||
cipher.encryptBlock(keystream, 0); | |||
// Encrypt | |||
for (var i = 0; i < blockSize; i++) { | |||
words[offset + i] ^= keystream[i]; | |||
} | |||
} | |||
return CFB; | |||
}()); | |||
return CryptoJS.mode.CFB; | |||
})); |