github.com/jincm/wesharechain@v0.0.0-20210122032815-1537409ce26a/app/lib/crypto1/ofb/ofb.js (about)

     1  /*!
     2   * Crypto-JS v1.1.0
     3   * http://code.google.com/p/crypto-js/
     4   * Copyright (c) 2009, Jeff Mott. All rights reserved.
     5   * http://code.google.com/p/crypto-js/wiki/License
     6   */
     7  (function(){
     8  
     9  // Public API
    10  Crypto.mode.OFB = {
    11  	encrypt: OFB,
    12  	decrypt: OFB
    13  };
    14  
    15  // The mode function
    16  function OFB(cipher, m, iv) {
    17  
    18  	var blockSizeInBytes = cipher._blocksize * 4,
    19  	    keystream = iv.slice(0);
    20  
    21  	// Encrypt each byte
    22  	for (var i = 0; i < m.length; i++) {
    23  
    24  		// Generate keystream
    25  		if (i % blockSizeInBytes == 0)
    26  			cipher._encryptblock(keystream, 0);
    27  
    28  		// Encrypt byte
    29  		m[i] ^= keystream[i % blockSizeInBytes];
    30  
    31  	}
    32  
    33  }
    34  
    35  })();