شبیه‌سازی شبکه‌های بی سیم و کامپیوتری
شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا
  • شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا

مشخصات بلاگ
شبیه‌سازی شبکه‌های بی سیم و کامپیوتری

امکان سفارش، شبیه سازی مقاله و پایان نامه وجود دارد،
مطالب، با ذکر منبع قابل انتشار در سایت ها و وبلاگ ها و.. می باشد.
جهت دریافت مشاوره رایگان تماس بگیرید:

شماره تماس: 09147082079-0098
آیدی تلگرامی:https://t.me/MuosSA_NbO
جی میل :mo30no@gmail.com

تمامی کدهای این وبلاگ در حال حاضر به زبان متلب می باشد

«آنچه می‌دانیم ناچیز و آنچه نمی‌دانیم عظیم و وسیع است»
$$پیر سیمون لاپلاس$$

۳ مطلب در شهریور ۱۳۹۹ ثبت شده است

برای این کار از دو تابع غیر مستند متلب با عناوین  getByteStreamFromArray و  getArrayFromByteStream استفاده می کنیم که اولی  دنباله باینری  را به  دنباله  دهدهی یا دسیمال تبدیل می کند و دومی آن را به فرم باینری و قابل خواندن به زبان ماشین درمیاورد.

با استفاده از این دو تابع شما قادر خواهد بود، ابجکت ها متغیرها، مجموعه دستورات، کلاس ها و فیگر به فرم uint8 یا دسیمال دراورده و در یک فایل متنی ذخیره سازی کنید و بعدا ان را بازیابی کنید .

 به عنوان مثال  نمودار زیر به فرم یک بردار  1 در 55256 قابل ذخیره سازی خواهد بود

 

برای تبدیل فرم بالا  به بردار دسیمال دستورات زیر را در یک اسکریپت متلب اجرا کنید :

 

 

   hFig = handle(figure);  % a new default Matlab figure
   set(hFig, 'toolbar','none')

   x=0:.01:5; hp=plot(x,sin(x));
   byteStream = getByteStreamFromArray(hFig);


   delete(hFig);
   hFig2 = getArrayFromByteStream(byteStream);

در سطر اول یک فیگر ایجاد می شه و هندا اون در متغیر hFig قرار داده می شه

در سطر دوم تنظیماتی به فیگر اعمال می شه

در سطر سوم نمودار  دلخواه رسم می شه

در سطر چهارم با استفاده از تابع getByteStreamFromArray، ارایه باینری( یا زبان ماشین دستورات و متغیرها) به ارایه دسیمال تبدیل می شه

در سطر پنجم هندل فیگر(فرم) که دیگه نیازی بهش نیاز نداریم حذف می شه و در سطر اخر فرم  بدون استفاده از هندل آن با استفاده از  دستور getArrayFromByteStream بازیابی می شه 

 

همچنین دستورات زیر معتبر هستند:

x=network;
y=getByteStreamFromArray(x);
z=getArrayFromByteStream(y)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lf1='f03c120195d3628e0121070fc7ae95373e8585443c388428b04c03b9625f2871';
 lf2=getByteStreamFromArray(lf);
lf3=getArrayFromByteStream(lf2)

 

 

۱ نظر موافقین ۰ مخالفین ۰ ۱۷ شهریور ۹۹ ، ۰۷:۱۸
موسی حسن زاده
چهارشنبه, ۱۲ شهریور ۱۳۹۹، ۰۱:۳۳ ب.ظ

ارسال پست‌ها تخصصی و علمی بزودی

بزودی پست هایی در حوزه برنامه نویسی رمزارزها، شبکه های تراهرتز، برنامه نویسی شبکه به زبان های متلب، سی پلاس، اسمبلی، پایتون و... منتشر خواهد شد... 

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ شهریور ۹۹ ، ۱۳:۳۳
موسی حسن زاده
دوشنبه, ۱۰ شهریور ۱۳۹۹، ۰۸:۴۹ ق.ظ

کد متلب هش256( sha256)

ورودی این تابع یک متن و خروجی آن یک هش با طول 64 هگزادسیمال(256 بیتی) که بیشتر در  فیلتر پیام‌های اسپم ورمزنگاری خصوصا رمزارزها مورد استفاده قرار می‌گیره

 

کد متلب:

function out = sha256( msg )
    % Initial Hash Values(8 constant 32-bit words).(§5.3.3)
    default_hash = [
                    '6a09e667';
                    'bb67ae85';
                    '3c6ef372';
                    'a54ff53a';
                    '510e527f';
                    '9b05688c';
                    '1f83d9ab';
                    '5be0cd19'
                    ];
    % Constant value array (64 constant 32-bit words) to be used for the iteration t of the hash computation.(§4.2.2)
    K = [
        '428a2f98'; '71374491'; 'b5c0fbcf'; 'e9b5dba5'; 
        '3956c25b'; '59f111f1'; '923f82a4'; 'ab1c5ed5';
        'd807aa98'; '12835b01'; '243185be'; '550c7dc3'; 
        '72be5d74'; '80deb1fe'; '9bdc06a7'; 'c19bf174';
        'e49b69c1'; 'efbe4786'; '0fc19dc6'; '240ca1cc';
        '2de92c6f'; '4a7484aa'; '5cb0a9dc'; '76f988da';
        '983e5152'; 'a831c66d'; 'b00327c8'; 'bf597fc7';
        'c6e00bf3'; 'd5a79147'; '06ca6351'; '14292967';
        '27b70a85'; '2e1b2138'; '4d2c6dfc'; '53380d13'; 
        '650a7354'; '766a0abb'; '81c2c92e'; '92722c85';
        'a2bfe8a1'; 'a81a664b'; 'c24b8b70'; 'c76c51a3'; 
        'd192e819'; 'd6990624'; 'f40e3585'; '106aa070';
        '19a4c116'; '1e376c08'; '2748774c'; '34b0bcb5'; 
        '391c0cb3'; '4ed8aa4a'; '5b9cca4f'; '682e6ff3';
        '748f82ee'; '78a5636f'; '84c87814'; '8cc70208'; 
        '90befffa'; 'a4506ceb'; 'bef9a3f7'; 'c67178f2'
    ];
    % First padd the input message to be a multiple of 512(bits).(§5)
    [padded_msg,padded_len] = padder( msg );
    % Split padded message to N (512-bit) blocks.(§6)
    [M,total_blocks] = split2block( padded_msg,padded_len );
    W = zeros( 64, 32 );
    H = zeros( 8, 32 );
    % Main SHA-256 compuation process.(§6.2.2)
    for j = 1:8 % Load initial hash values at first iteration.
        H(j,:) = hexToBinaryVector( default_hash( j , : ) , 32 );
    end
    for i = 1:total_blocks % For every block M(i).
        % Step 1 - Prepare the message schedule.
        for j = 1:64
            if j >= 1 && j <= 16
                W( j, 1:32 ) = M( i, 32*(j-1)+1:j*32 );
            else
                W( j, 1:32 ) = mod32add( sigma1( W( j-2, : ) ), W( j-7, : ) , sigma0( W( j-15, : ) ), W( j-16, : ) );
            end
        end
        % Step 2 - Initialize the eight working variables, a, b, c, d, e, f, g,
        % and h, with the (i-1)st hash value.
        a = H(1,:);
        b = H(2,:);
        c = H(3,:);
        d = H(4,:);
        e = H(5,:);
        f = H(6,:);
        g = H(7,:);
        h = H(8,:);
        % For t=0 to 63.
        for t = 1:64
            T1 = mod32add( h, capSigma1(e),ch( e, f, g ),hexToBinaryVector( K( t,: ) , 32 ), W( t,:  ) );
            T2 = mod32add( capSigma0(a), maj( a, b ,c )  );
            h = g;
            g = f;
            f = e;
            e = mod32add( d, T1 );
            d = c;
            c = b;
            b = a;
            a = mod32add( T1, T2 );
        end
        % Step 4 - Compute the ith intermediate hash value H(i).
        H(1,:) =  mod32add( a, H(1,:)  );
        H(2,:) =  mod32add( b, H(2,:)  );
        H(3,:) =  mod32add( c, H(3,:)  );
        H(4,:) =  mod32add( d, H(4,:)  );
        H(5,:) =  mod32add( e, H(5,:)  );
        H(6,:) =  mod32add( f, H(6,:)  );
        H(7,:) =  mod32add( g, H(7,:)  );
        H(8,:) =  mod32add( h, H(8,:)  );    

    end
    % Final Step - After hash process the resulting 256-bit message digest
    % of the message, M, is:
    out = binaryVectorToHex( horzcat( H(1,:), H(2,:), H(3,:), H(4,:), H(5,:), H(6,:) ,H(7,:), H(8,:)  ) );
end

function [out,len] = padder( msg )
    % Function padder : Padds the input message.(§5.1.1)
    padded = []; % Initialize output.
    l = length(msg)*8; % Length of the input message in dec.
    for i = 1:length(msg) % First append message body.
        padded = strcat(padded,dec2bin(msg(i),8));
    end
    padded( end + 1 ) = '1'; % Append bit '1' at the end of message body.
    % Calculate number of zeros to be added at the padded message.
    k = mod( 447 - l , 512 );
    padded( end + 1 : end + k ) = '0';  % Append k bits '0' at the end of message body.
    % Append the length of the input message (in 64-bits).
    padded( end + 1: end + 64 ) = reshape( dec2bin( l, 64 ), 1, [] );
    out = logical(padded(:)'-'0'); % Convery to logical array.
    len = length( padded ); % Return also length of the padded message.
end

function [out,total_blocks] = split2block( padded_msg,padded_len )
    % Function split2block : Splits the padded message to N 512-bit blocks M(N).(§5.2.1)
    total_blocks = padded_len/512; % Calculate total number of blocks.
    out = zeros( total_blocks, 512 );
    for i = 1:total_blocks % Split per 512 bits (Big-Endianess).
        out( i, 1:512 ) = padded_msg( (i-1)*512 + 1:i*512 );
    end
end

function out = fix2mod( x )
    % Function fix2mod : Converts the input logical word to binary.
    out = num2str( x );
    out(isspace(out)) = '';
    out = bin2dec(out);
end

function out = mod32add( varargin )
    % Function mod32add : Performs addition modulo 32.(§3.2.1)
    out = 0; % initialise return arguments
    for i = 1:length( varargin ) % Calculate addition
        out = out + fix2mod(varargin{i});
    end
    % Perform modulo 32 operation.
    out = dec2bin( mod( ( out ), 2^32 ),32 ) ;
    out = logical( out(:)'-'0' ); % Cast output to logical array.
end

function out = rotr( word, pos )
    % Function rotr : Performs ROTR (Cirular right shift) operation.(§3.2.1)
    out = zeros( 1, length( word ) );
    out( pos + 1:end ) = word( 1:end - pos + 0 ); 
    out( 1:pos ) = word( end - pos + 1 : end ); 
end

function out = shr( word, pos )
    % Function rotr : Performs SHR (Right shift) operation.(§3.2.1)
    out = zeros( 1, length( word ) );
    out( 1 + pos:end ) = word( 1:end - pos ); 
end

function out = maj( x, y, z )
    % Function maj : Performs MAJ operation.(§4.1.2)
    out = bitxor( bitxor( x & y, x & z ) , y & z );
end

function out = ch( x, y, z )
    % Function maj : Performs CH operation.(§4.1.2)
    out = bitxor( x & y ,~x & z );
end

function out = capSigma0( x )
    % Function Ó0 : Performs Ó0 operation.(§4.1.2)
    out = bitxor( bitxor( rotr( x, 2 ), rotr( x, 13 ) ) , rotr( x, 22 ) );
end

function out = capSigma1( word )
    % Function Ó1 : Performs Ó0 operation.(§4.1.2)
    out = bitxor( bitxor( rotr( word, 6 ), rotr( word, 11 ) ) , rotr( word, 25 ) );
end

function out = sigma0( word )
    % Function ó0 : Performs Ó0 operation.(§4.1.2)
    out = bitxor( bitxor( rotr( word, 7 ), rotr( word, 18 ) ) , shr( word, 3 ) );
end

function out = sigma1( word )
    % Function ó1 : Performs Ó0 operation.(§4.1.2)
    out = bitxor( bitxor( rotr( word, 17 ), rotr( word, 19 ) ), shr( word, 10 ) );
end

 

نحوه فراخوانی نمونه:

 msg =num2str(randi(40000,1))'; 
sh=sha256( msg )

 

نمونه خروجی:

 

 

 

 

 

 

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۰ شهریور ۹۹ ، ۰۸:۴۹
موسی حسن زاده