Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var bifidEncode, bifidDecode;
- // Assign closures that have access to the table
- (function(){
- // Generate the encryption table
- /* * * * * * * * *
- * 1 2 3 4 5 6 *
- * 1 A B C D E F *
- * 2 G H I J K L *
- * 3 M N O P Q R *
- * 4 S T U V W X *
- * 5 Y Z 0 1 2 3 *
- * 6 4 5 6 7 8 9 *
- * * * * * * * * */
- var _table = (function(){
- var result = {};
- var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- for (var i = 0; i < chars.length; i += 1) {
- var c = chars.charAt(i);
- var index = Math.floor( i / 6 ).toString() + ( i % 6 ).toString();
- result[c] = index;
- result[index] = c;
- }
- return result;
- })();
- bifidEncode = function( rawText ) {
- var rawIndices = "";
- for( var i = 0; i < rawText.length; i++ ) {
- rawIndices += _table[rawText.charAt( i )];
- }
- // cipherIndices = rawIndices[::2] + rawIndices[1::2]
- var cipherIndices = "";
- for( var i = 0; i < rawIndices.length; i += 2 ) {
- cipherIndices += rawIndices.charAt( i );
- }
- for( var i = 1; i < rawIndices.length; i += 2 ) {
- cipherIndices += rawIndices.charAt( i );
- }
- var cipherText = "";
- for( var i = 0; i < cipherIndices.length; i += 2 ) {
- cipherText += _table[cipherIndices.substr( i, 2 )];
- }
- return cipherText;
- };
- bifidDecode = function( cipherText ) {
- var cipherIndices = "";
- for( var i = 0; i < cipherText.length; i++ ) {
- cipherIndices += _table[cipherText.charAt( i )];
- }
- var rawIndices = "";
- for( var i = 0; i < cipherText.length; i++ ) {
- rawIndices += cipherIndices[i];
- rawIndices += cipherIndices[i + cipherText.length];
- }
- var rawText = "";
- for( var i = 0; i < rawIndices.length; i += 2 ) {
- rawText += _table[rawIndices.substr( i, 2 )];
- }
- return rawText;
- };
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement