Показать сообщение отдельно
  #1 (permalink)  
Старый 30.01.2017, 01:10
Новичок на форуме
Отправить личное сообщение для VReactor Посмотреть профиль Найти все сообщения от VReactor
 
Регистрация: 24.01.2017
Сообщений: 6

Побитовые операции
Всем привет, пожалуйста можете посмотреть скрипт и помочь исправить, и объяснить, попытался сделать, но правильно не шифруется
Исхoдный тeкст обрaбатываeтся посимвольно. Символ разбивается на два байта.
Шифрование происходит инверсией бит (0 ↔ 1) в правом байте символа.
"use strict"

function Main()
{
    var text = [];

var that = this;


this.charCode = function(ch){
        //извлечь байты
        var left = ch.charCodeAt() >> 8;// Нужно еще перевести в 2-ую СС?
        var right = ch.charCodeAt(); //
        right = that.swapBits( right );
 
        // сложить в один char
        return String.fromCharCode( left << 8 | right );
}

 this.swapBits = function(x){
        return ~x;
    }

     this.mainP = function()
    {
 
        var myString = "Жи Ши пиши";

        for(var i = 0; i < myString.length; i++){
        	text[i] = myString.charAt( i );
        }
         console.log(text);
 
        for (var i = 0; i < text.length; i++)
        {
            text[i] = that.charCode(text[i]);
        }
       
         console.log(text);
    }

    function stringToBytes ( str ) {
	var ch, st, re = [], j=0;
	for (var i = 0; i < str.length; i++ ) {
		ch = str.charCodeAt(i);
		if(ch < 127)
		{
			re[j++] = ch & 0xFF;
		}
		else
		{
			st = [];    // clear stack
			do {
				st.push( ch & 0xFF );  // push byte to stack
				ch = ch >> 8;          // shift value down by 1 byte
			}
			while ( ch );
			st = st.reverse();
			for(var k=0;k<st.length; ++k)
				re[j++] = st[k];
		}
	}
	return re;
}

}

Последний раз редактировалось VReactor, 30.01.2017 в 01:14.
Ответить с цитированием