. () . .
. , , .
.
.
, . . , , . .
, . () . , .Δ, . .
, .
().
, , . .
. , .
. T(i),
T(i+1) = (A*T(i)+C)modm,
- , (0) - , . , .
, . m 2n, n - . , . , , , . . , , - , mod 4 = 1.
|
|
. , x(j) b, j=1, 2,..., n. G H(j).
-
- , .
- , k - . k 2. .
:
r1:=r0 r2:=r1... rk-1:=rk-2
r0:=a0r1 Åa1r2 Å...Åak-2rk-1
i:=rk-1-
r0 r1... rk-1 - k , a0 a1... ak-1 - k-1. i - i- .
- 2 k -1.
- , .. - k. 3.1.
3.1
k | |
, .
, -. -. k=10 1023 ( -) 388000.
( Ȕ ), .
, .
. , , , . , .
, ( 0;1), - , , 2 (.. 0+0=1+1=0, 0+1=1+0=1). .
, , . , - , , . 30- . - .
|
|
, , , . , , .
= 10011000100010001001010010010000
00010010000000110000101000000111
= 1000 1010 1000 1011 1001 1110 1001 0111
00010111000011010001100100001100
= 10001111100001011000110110011100
, , , , , .
- , , - , . - , . , , , , , , , (, , ).
, .
. . A B C .
A + B, (A+B) C
A + B C =
A + B -C, (+ B) ,
A - B, (A-B)
A - B C =
A - B + C, (- B)
=3
0+0=0 1+0=1 2+0=2
0+1=1 1+1=2 2+1=0
0+2=2 1+2=0 2+2=1
0-0=0 1-0=1 2-0=2
0-1=2 1-1=0 2-1=1
0-2=1 1-2=2 2-2=0
( =33). 0 (-1).
-, , , 0 -1, , , C - , 0 -1 , .
: 3. , 2 .
, , . , , , , . , , , , . , , , . , . :
|
|
1. ( , , ).
2. ( ) .
#include <iostream>
#include <string>
#include <vector> // ? Vector
using namespace std;
string alphavit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()_+-;:?<>/{}[]\\\"'";
int gen_num(int input){
return (11 * input + 3) % 50;}
void xor_alg(string input_str, long long int key){ \\ xor?
vector<int> gamma;
vector<int> code;
for(int i=0; i<input_str.size(); i++){
for(int j=0; j<alphavit.size(); j++){
if(input_str[i] == alphavit[j]){
code.push_back(j); \\ ? ()
break;
}}}
gamma.push_back(gen_num(key)); \\ ? ()
for(int i=0; i<code.size(); i++){
gamma.push_back(gen_num(gamma.back())); \\ ? ()
}
cout << endl;
for(int i=0; i<code.size(); i++){
int new_code = code[i] ^ gamma[i]; // ^- XOR
cout << alphavit[new_code];
new_code = 0; // 0? new_code
}}
int main(){
string input_buffer;
long long int key_buffer = 0;
cout << "Enter a word: ";
cin >> input_buffer;
cout << "Enter a key: ";
cin >> key_buffer;
xor_alg(input_buffer, key_buffer);
return 0;
́ ́ 2 (́ ́, ́ Ȼ, , XOR, , , ) , . , , . , 1, . 2, .
toupper:
int toupper(int character); |
ctype.h | |
cctype | ++ |
|
|
toupper . , , . , , .
, , , .
++ toupper <locale>.
:
- haracter
, , int, EOF.
, , , . int, char.
tolower:
int tolower (int c); |
ctype.h | |
cctype | ++ |
tolower . , , . , , .
, , , .
++ tolower <locale>.
:
- haracter
, , int, EOF.
, , , . int, char.