Защита данных передаваемы посредством GET запроса

7up
Offline
Зарегистрирован: 27.12.2016

andycat пишет:
Да, сервер естественно будет анализировать правильность, корректность, опять же отправив одну команду повторно, злоумышленник ничего не добьётся, главное чтобы он общую картину не смог повторить.

Именно! :)))

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

итак попробовал я AES - беда :( - зашифрованные данные всегда одинаковые если исходник одинаковый

тестовый скетч и результат:

 



#include <avr/wdt.h>
#include <avr\pgmspace.h>
#include <EEPROM.h>
#include <AESLib.h>

char gprs_imei_code[60]; // crypto key + crypro imei + crypto data
char original_imei_code[20];
char testline[] = "867856037506554";
byte key[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

void setup() {
  Serial.begin(9600);
  strcpy(original_imei_code, testline);
  strcpy(gprs_imei_code,original_imei_code);
  aes128_enc_single(key, gprs_imei_code);
  showLog("enc",gprs_imei_code);
  aes128_dec_single(key, gprs_imei_code);
  showLog("dec",gprs_imei_code);
  aes128_enc_single(key, gprs_imei_code);
  showLog("enc",gprs_imei_code);
  aes128_dec_single(key, gprs_imei_code);
  showLog("dec",gprs_imei_code);
  aes128_enc_single(key, gprs_imei_code);
  showLog("enc",gprs_imei_code);
  aes128_dec_single(key, gprs_imei_code);
  showLog("dec",gprs_imei_code);
  aes128_enc_single(key, gprs_imei_code);
  showLog("enc",gprs_imei_code);
  aes128_dec_single(key, gprs_imei_code);
  showLog("dec",gprs_imei_code);
  aes128_enc_single(key, gprs_imei_code);
  showLog("enc",gprs_imei_code);
  aes128_dec_single(key, gprs_imei_code);
  showLog("dec",gprs_imei_code);
  aes128_enc_single(key, gprs_imei_code);
  showLog("enc",gprs_imei_code);
  aes128_dec_single(key, gprs_imei_code);
  showLog("dec",gprs_imei_code);
}

void loop() {
}

void encodeIMEI() {
  
}

void showLog (char *titlestr, char *logstr) {
  Serial.print(titlestr); Serial.print("~ ");
  byte i = 0;
  for (i=0;i<16;++i) {
    if ((logstr[i] >= 0x20) && (logstr[i] < 0x7F)) {
      Serial.write(logstr[i]);
    } else {
      Serial.print(" 0x"); Serial.print(logstr[i], HEX); Serial.print(" ");
    }
  }
  /*while (logstr[i] > 0) {
    if ((logstr[i] >= 0x20) && (logstr[i] < 0x7F)) {
      Serial.write(logstr[i]);
    } else {
      Serial.print(" 0x"); Serial.print(logstr[i], HEX); Serial.print(" ");
    }
    ++i;
  }*/
  Serial.println(" ~");
}


enc~  0xFFFFFFB7  0xFFFFFF83 A 0xFFFFFFB8  0xFFFFFF98  0xFFFFFFC4  0xFFFFFFF6 n 0xFFFFFFE1  0xFFFFFFA5  0xFFFFFFF5 ` 0xFFFFFFF0  0xFFFFFF82 2 0xFFFFFFCB  ~
dec~ 867856037506554 0x0  ~
enc~  0xFFFFFFB7  0xFFFFFF83 A 0xFFFFFFB8  0xFFFFFF98  0xFFFFFFC4  0xFFFFFFF6 n 0xFFFFFFE1  0xFFFFFFA5  0xFFFFFFF5 ` 0xFFFFFFF0  0xFFFFFF82 2 0xFFFFFFCB  ~
dec~ 867856037506554 0x0  ~
enc~  0xFFFFFFB7  0xFFFFFF83 A 0xFFFFFFB8  0xFFFFFF98  0xFFFFFFC4  0xFFFFFFF6 n 0xFFFFFFE1  0xFFFFFFA5  0xFFFFFFF5 ` 0xFFFFFFF0  0xFFFFFF82 2 0xFFFFFFCB  ~
dec~ 867856037506554 0x0  ~
enc~  0xFFFFFFB7  0xFFFFFF83 A 0xFFFFFFB8  0xFFFFFF98  0xFFFFFFC4  0xFFFFFFF6 n 0xFFFFFFE1  0xFFFFFFA5  0xFFFFFFF5 ` 0xFFFFFFF0  0xFFFFFF82 2 0xFFFFFFCB  ~
dec~ 867856037506554 0x0  ~
enc~  0xFFFFFFB7  0xFFFFFF83 A 0xFFFFFFB8  0xFFFFFF98  0xFFFFFFC4  0xFFFFFFF6 n 0xFFFFFFE1  0xFFFFFFA5  0xFFFFFFF5 ` 0xFFFFFFF0  0xFFFFFF82 2 0xFFFFFFCB  ~
dec~ 867856037506554 0x0  ~
enc~  0xFFFFFFB7  0xFFFFFF83 A 0xFFFFFFB8  0xFFFFFF98  0xFFFFFFC4  0xFFFFFFF6 n 0xFFFFFFE1  0xFFFFFFA5  0xFFFFFFF5 ` 0xFFFFFFF0  0xFFFFFF82 2 0xFFFFFFCB  ~
dec~ 867856037506554 0x0  ~


 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

andycat пишет:

итак попробовал я AES - беда :( - зашифрованные данные всегда одинаковые если исходник одинаковый

Было бы странно ожидать от AES другого поведения :) :) :)

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

DIYMan пишет:

andycat пишет:

итак попробовал я AES - беда :( - зашифрованные данные всегда одинаковые если исходник одинаковый

Было бы странно ожидать от AES другого поведения :) :) :)

я надеялся :)

буду думать дальше искать удобную и для клиента и для сервера логику работы.....

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Используй CBC режим. И будет тебе щастье.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

итак выбрал метод добавления случайных цифр в случаные позиции отправляемой строки с дальнейшим шифрованием AES128

ниже скетч и результат, первый столбец шестнадцатиричный набор байт, потом время кодирования (в среднем меньше 3 миллисекунд), и результат расшифровки

#include <avr/wdt.h>
#include <avr\pgmspace.h>
#include <EEPROM.h>
#include <AESLib.h>

char gprs_imei_code[70]; // crypto key + crypro imei + crypto data
char original_imei_code[20];
char testline[] = "867856037506554";
byte master_key[] = {255, 1, 2, 127, 4, 5, 6, 7, 8, 9, 10, 99, 12, 13, 14, 15};
char rrnd1_imei[33];
char rrnd2_imei[17];

void setup() {
  Serial.begin(9600);
  strcpy(original_imei_code, testline);
  //strcpy(gprs_imei_code, original_imei_code);
  randomSeed(analogRead(A2));
}

void loop() {
  unsigned long tms = micros();
  encodeIMEI();
  tms = micros() - tms;
  Serial.print(gprs_imei_code); Serial.print(" "); Serial.print(tms, DEC); Serial.print(" ");
  decodeIMEI();
  Serial.println(gprs_imei_code);
  delay(1000);
}

void decodeIMEI() {
  // decode hex
  for (byte i = 0; i < 16; ++i) {
    byte pb = gprs_imei_code[i * 2];
    if (pb >= 0x41) pb = pb - 0x37; else pb = pb - 0x30;
    rrnd1_imei[i] = pb * 16;
    pb = gprs_imei_code[i * 2 + 1];
    if (pb >= 0x41) pb = pb - 0x37; else pb = pb - 0x30;
    rrnd1_imei[i] = rrnd1_imei[i] + pb;
  }
  aes256_dec_single(master_key, rrnd1_imei);
  for (byte i = 0; i < 16; ++i) {
    byte pb = gprs_imei_code[i * 2 + 32];
    if (pb >= 0x41) pb = pb - 0x37; else pb = pb - 0x30;
    rrnd2_imei[i] = pb * 16;
    pb = gprs_imei_code[i * 2 + 33];
    if (pb >= 0x41) pb = pb - 0x37; else pb = pb - 0x30;
    rrnd2_imei[i] = rrnd2_imei[i] + pb;
  }
  aes256_dec_single(master_key, rrnd2_imei);
  // strcat
  rrnd1_imei[16] = 0; rrnd2_imei[16] = 0;
  strcat(rrnd1_imei, rrnd2_imei);
  // find changed chars
#define fixlenght 15 // fixed lenght real data
  for (byte i = 0; i < fixlenght; ++i) {
    for (byte j = 0; j < 4; ++j) {
      byte ppc = rrnd1_imei[j];
      if (ppc >= 0x41) ppc -= 0x37; else ppc -= 0x30;
      if (i == ppc) {
        gprs_imei_code[i] = rrnd1_imei[4 + fixlenght + j];
        break;
      } else {
        gprs_imei_code[i] = rrnd1_imei[i + 4];
      }
    }
  }
  gprs_imei_code[fixlenght] = 0;
}

void encodeIMEI() {
  // add random chars
  byte orlen = strlen(original_imei_code);
  if (orlen > 16) orlen = 16;
  byte posrnd[4];
  for (byte i = 0; i < 4; ++i) {
l1: byte trb = random(orlen);
    if (i > 0) {
      boolean flex = false;
      for (byte j = 0; j < i; ++j) {
        if (trb == posrnd[j]) {
          flex = true;
          break;
        }
      }
      if (flex)  goto l1; else  posrnd[i] = trb;
    } else {
      posrnd[i] = trb;
    }
    if (posrnd[i] > 9) gprs_imei_code[i] = posrnd[i] + 0x37; else gprs_imei_code[i] = posrnd[i] + 0x30;
  }
  for (byte i = 0; i < orlen; ++i) {
    for (byte j = 0; j < 4; ++j) {
      if (i == posrnd[j]) {
        gprs_imei_code[4 + orlen + j] = original_imei_code[i];
        gprs_imei_code[i + 4] =  (random(10) + 0x30);
        break;
      } else {
        gprs_imei_code[4 + i] = original_imei_code[i];
      }
    }
  }
  // add chars to 32 lenght
  byte lastlen = 32 - 8 - orlen;
  for (byte k = 0; k < lastlen; ++k) {
    gprs_imei_code[k + 8 + orlen] = (random(10) + 0x30);
  }
  for (byte k = 0; k < 16; ++k) rrnd1_imei[k] = gprs_imei_code[k]; rrnd1_imei[16] = 0;
  aes256_enc_single(master_key, rrnd1_imei);
  for (byte k = 0; k < 16; ++k) rrnd2_imei[k] = gprs_imei_code[k + 16]; rrnd2_imei[16] = 0;
  aes256_enc_single(master_key, rrnd2_imei);
  // convert to HEX
  for (byte i = 0; i < 16; ++i) {
    byte tb = rrnd1_imei[i];
    byte pb = tb / 16;
    if (pb < 10) gprs_imei_code[i * 2] = pb + 0x30; else gprs_imei_code[i * 2] = pb + 0x37;
    pb = tb % 16;
    if (pb < 10) gprs_imei_code[i * 2 + 1] = pb + 0x30; else gprs_imei_code[i * 2 + 1] = pb + 0x37;
  }
  for (byte i = 0; i < 16; ++i) {
    byte tb = rrnd2_imei[i];
    byte pb = tb / 16;
    if (pb < 10) gprs_imei_code[i * 2 + 32] = pb + 0x30; else gprs_imei_code[i * 2 + 32] = pb + 0x37;
    pb = tb % 16;
    if (pb < 10) gprs_imei_code[i * 2 + 33] = pb + 0x30; else gprs_imei_code[i * 2 + 33] = pb + 0x37;
  }
  // end line
  gprs_imei_code[64] = 0;
}

 

 

8FCEE76D6FCBA03E5962A1D9E015170E647F8F21D47C7A1061C55F2E36B3C04E 2544 867856037506554
9E0D578628C6B777A62F4871F45D2D69E7B4DC6FBE7048400D92F6BE3BF425BE 2552 867856037506554
3D8E5D59B04E82E17DCA24D5CC84E760795481B24E1D8D0CC15F6D77BA697C03 2548 867856037506554
874572051FB73A012B041096FCECD1BCD1166A6E33A980DD2FCF4B5B508DB050 2644 867856037506554
BB40E7A4CEFA6F5C9DA28982E1CC27C215D0E66D27EAA0D180D4BC741CD443C8 2820 867856037506554
C6DEFF84DC5777631A2360E8E242E4939E380BD7D91532AE3E8DB3904E956267 2644 867856037506554
F7D75129E6E187F4ED92676D51B4F057F838F91A8C4C79CD16CD9B369ADBCC4C 2636 867856037506554
8296226B981D0B036E93F78A62DFC6E70DFBC7BB7C7BF3384115DF748F45015D 2552 867856037506554
29156374FC805508D690B2643BE3487DDC5E273C250EDE39EE7CFA528426B8BB 2548 867856037506554
B3CE354F68AE81D22F4C8C7C1E5565FDF9A3963B1039C04642F460429F41D591 2552 867856037506554
AC03D40E59742E7E3CCFE8B5D8D612984470813ECD7441086A56C37FE788CF4F 2544 867856037506554
7EEFD58B5E817FC2CF9F1988AF17586A8FB7E9813628A96F05BDF0E33AD8B983 2552 867856037506554
54FDF6BEE0B7AD3E3353097D4E75E3B651E3119E2DC4FB8F88E3B79EE9EECF87 2632 867856037506554
D40DC3DE792BEFCAB4269A56ED240BBBE3E860105B94497B60DE9115E15486B5 2552 867856037506554
987A6DAF8E9A5B7AB671A8426C724990BD150B4B03717EAEC9B9F32637163789 2636 867856037506554
5493371A17EF09D049EC229C9B02FF95B1D9D35E7C3004FEF5471BD70F10BB66 2920 867856037506554
EA588E7E5412925741AAC32002B469138517026436D874DEEC3421E438948DF0 2552 867856037506554
81A902ED22E6F3C17344F0F14141B48FF0B153A1CD2D4B9AA25D50102C8C12C4 2552 867856037506554
A1BA35BBEEEEB5078E2FD66E09390E125C37087F5B9275B3DB7D03BD9A995D33 2544 867856037506554
A504C16B7B89FAC181DB94F8E46741082F0346401721F8EBC978EE1B7956DE59 2548 867856037506554
D25100340C98CD80D405528535AA013D65BF202F7862979FD674B45F15239CBB 2836 867856037506554
976ACE7BFF4E4722DAE5130E324C5E643CC5CB845EA8464D58D40E10A84C7794 2544 867856037506554
F4D6DD31E87FF77A43EFE1945F2759612D9FAB3BA8F2EA09C20FB0AEDCA0E641 2820 867856037506554
A80568CB668CB7741A91E830208D6ED747F14894A00A350CD989700971C60555 2544 867856037506554
39C441F561E681CBBB1EFE975360640BA51873178A9DBDB224699C9D01638ACC 2552 867856037506554
10BF27719B054E9796E7CA609B4ADD89A8C683E1DFA574D3BBDC68A5C01002A1 2548 867856037506554
032CBA3A735CCDBD82CAB92D7963E46462C781E0E6CCAA23A4758E74EADA0CC9 2548 867856037506554
DD6970380654E3766512AB0F7D3287A172A1C998C83EEBC46448971740C560AF 2544 867856037506554
E505C018F6D295191BCEF98599B059A0E5B70044AA6AD8B8BFAF1BF282485CF5 2644 867856037506554
63728C1F7A575419BF8E79ED36E4DCE5E2F343881C22B934EFF3E534143B6A57 2540 867856037506554
25127DA25E5ECEA74CA483A906B87A6ADE3D0EA35F03BD42FBD26233923A2820 2540 867856037506554
31D9F528A6678929C4EB415A4F41E9F078A8455701739A9207C7F07DA97B9236 2556 867856037506554
0969FD70BB3E3BEA90547B793387D2A7C3AFE7C7704D78FEFCFAC02819E29637 2640 867856037506554
C09A03D55EEABE2CDFE9A5D36FF86E6CC88DA8702472D0088D8CB896CAB1BA76 2552 867856037506554
816C94AFAC690CD92452199250BC0E70A740FD65BD08CF506E987B1EB2A07A8E 2548 867856037506554
0D870FE0F35A652FFF31A502537653481388BD7405B995206B6A5055150E1F3B 2552 867856037506554
D72729AA69BAF09CC5162B218A788D5DEA2A120DA8CED51D47DB639C360D75EE 2544 867856037506554
070FD5FAB4C6D2F6E1C410B00EB3B658C677F20603839029099E16E178A0DA7F 2552 867856037506554
D8287D15AA2674BF8E11CD4E3D863BA92F3934306F9CA0F65CE978B0B852B55C 2636 867856037506554
6FCD480EAAEA22900392D2F8E670B665832BE5EB038CEA6B8B63526505336ED0 2640 867856037506554
0616D1542685DABA9D3DF8BC2DE8D650BDBFFE9B58FF77D4E2775351FDCDAB45 2548 867856037506554
76FB0CFD5C6028517C3A9C5A0B0A65C47197F130C09935A672E4967C84FA9EFC 2732 867856037506554
A3740FD469C042366AFFCA40C903E9577C43BF2EC1F97269820A5B478F4FF8B8 2548 867856037506554
44B60B1A453DF168986E33FA6354B74E3ABA05B60CD5D6040B2369CE75DA56CD 2648 867856037506554
71BECE1D72CA151588FD60EB89B578DC13B8067A0D734B09ECE76EE72130C657 2540 867856037506554
D41F0ED0952C3130ECF08E8622B2DA47E9F92BA343B5EA412DB7A0C1E0532BB3 2644 867856037506554
5DEA7801E02B41F14D31C601D5E914D3356C70A98106CDD4E45E2EA66E947457 2544 867856037506554
BD9F4EA5F712A8D27F8A4ED71A554782EE936578AF3ECF8610E8AE9BB64D8A3D 2552 867856037506554
501D7C46B811818AA0A29843E8321E38C73E5E738042D735710887A58FF63C17 2548 867856037506554
BF93B30B7AAC2EF84D9F2F360A5C37F86AF9F8482AD5BD86B7855FF98185FA8C 2552 867856037506554
7391311639A0C668BA83610FA7A3CCEB66143CEC537D947C9BA404482FE8B123 2640 867856037506554
8BA36A15700142B4FF6565A9F68EC4EF6411C278E89648BD3F9C6AAC226FD34E 2552 867856037506554
0872AF99E4BCC2CCF9A6D284F933832E976040F7BA12E3423D5504AF8E9152A9 2544 867856037506554
B1FDB9CE9FF9E86983BF86E0FE6D5DE6DD14C7561211ECAA768CF945FA55D9CE 2552 867856037506554
681D6B150A76D734500743266F8C8B8999635A9DE95B23DC174CA12E6CCA8EA1 2644 867856037506554
501E2024F9C3C2EDC8510624147DDB00B74883022543133BE7726BEDEBA05A77 2740 867856037506554
AA13B97D47D1312785E124DFB737D4A12F85F38DC156467CA0E5EE5EF8FAF82D 2636 867856037506554
F2464A25A4C182263A89F312ABFAB81E648ACD066B1E2E1B0F54776C3FB4182F 2560 867856037506554
04CBA3A5D82B5BD1627CBC78F33EDF43AE8637585A0F1BB6F47EA7C494DE317A 2548 867856037506554
95BADADFABE54326C676992E4169E286C0112BA1DAAB5F38159C0112D9CB8DCE 2552 867856037506554
D6473E65E0763E65FACA5BBF9DF03CA871A72FB9003E3437D7CB04B830DAD96D 2548 867856037506554
719B26ECB75DF6B3A21DB05AF92BE7F04D5CA2EB9A0DFA368AE0A752629CDCB5 2544 867856037506554
FC84880901957BD69D5BBDEF2149FDE4005EC235E1D6BF118512F63E7B58688D 2636 867856037506554
04AC2DE8BB8C0F9BAC0994B290699D74560C3D6148365EEE681B8290FB11E74D 2548 867856037506554
386D5116A339287B0C97E5FF10E6844D2BC580E479AE876C26DFAF71F89E1F2E 2552 867856037506554
6CAEAC9D19A7B6E4D6F948ABD1202C735AF00542A8C68FD05B6A651E393672C6 2544 867856037506554
055C8B52445597DF6D9080E374903C680F2C1E6AE9CD7299F5EDAC47AAB53ED2 2556 867856037506554
19AC411150E25A40D7538162E644D0C0211880C48C976D1C67F6BE187D659760 2728 867856037506554
B31792F511517CA16FFAA2EBF9E116A3E6DA13AB9308E95FA26B6DF0F334CF34 2544 867856037506554
97B29457138B4DC351B4383A8DC32179C39F97C4F85FD76E4221F0A663659A28 2544 867856037506554
BC4589399FA81D8FED8FC380C7DBCC8B03F41FB1B385E3AFE8C08A6D4A99DA33 2548 867856037506554
3C16CDE6F96A04F96E7747E372D6B270DC2A87EDFAA3C94BE3F6DD5A38487F62 2544 867856037506554
9B058A9F18464715BB4351315DD01E650B658842019D5DC4EBFFEBFFB0701D10 2548 867856037506554
CFDE03FDF84260DD53EF0B11CE33AFC2EB09C3259DD8617E2BC269DCDFEB4D67 2728 867856037506554
14A78FC264BF66642D68ED3A5D958B297522EB8203B2BE1EE4143A9A82955805 2552 867856037506554
2DBB9E4C69E2389DDF5F2125455A534445EECE0B890CDB5D9BF31837954A5CED 2544 867856037506554
362ABA4F38DBE2EC9EDEA78A6F427D242F168AF83D9C0285CC2B9C196BCF0FC9 2552 867856037506554
F3310AA1F2B88D80F53FFEBA98B57BE27FF77B71692253DF8D0B56A2C9C7DB8D 2548 867856037506554
6CA8C942E05B2DCEB77CD42BC73809E52370B657D37F3A70110B177357B90447 2548 867856037506554
B28384BBF10B15CCE2679C643AACEF93E241E1483262357097063A4BAB766D58 2540 867856037506554
6B7410530F31AB74397FD299B717A33BDEA673F29D0662ADB212E813DA650FA7 2544 867856037506554
F8134BF172F85C60F9B65179765FBEBEE106E5E4F9D3796DB86DFE827BA6552E 2736 867856037506554
CF80F41E5AA1AA1E74D96E9981EEABDF222E2F1A801122572D12D7EB1C765FDD 2556 867856037506554
6FA6E14C619C1CEECB839B5457A0B5A2ABE0B13C7831696FCA3EA61E1119FAF2 2732 867856037506554
F8064F6A7B1871DD9F8204F88FFAD7BA9ADFAA61BC78DF157B12222CDD8B1633 2556 867856037506554
A3AD6023A0789BD397ABAF7B91804B234E4A988C1E6A9BB95D80B72FA359FF91 2636 867856037506554
4C6201A68177DAAACABF81F43131ABA2426DD7F1F44011E6FB24A351C6542B41 2556 867856037506554
8CE66B766C629068DDE151AA46A8B030D85F9E802F930AEF2EEDB4C51BB0E528 2640 867856037506554
42341CD461565F91C7F5D06DB43E522D5DBE14215B5782A3185456A011CACA71 2640 867856037506554
861839A2483EC774BE0410232F05A6472D53C4B3306FC6CAF9E7AAB457E1C242 2544 867856037506554
86FC885DAA6779349EFB19FA5A7C3F4FC5A040A1C978455D49B78D94969B52DB 2552 867856037506554
40349C8CC6C2E4E6A0E766279C5F15D944C789BA800ED177BE0EC338541E13E7 2544 867856037506554
27A0108743BE5E00BD878C3052824748321F092F13B09146FDB54490301FAE96 2640 867856037506554
8683F122E94F9424023AF2EF4054E79037E7DC6E6411DE1AE34D2E0E2F82CE36 2544 867856037506554
9765956AEBA38C83F74A72485780C1ED0FE811DC8F21F307FD8061DD1DEC03A5 2552 867856037506554
76547FACD11AE8B6FB341A90FF93FA3763F3CB5448480D914BBAB3B28151BBA1 2556 867856037506554
83116CCA311B735C0A93969298196EB3B75F9B3DC2F83EF3E078980817FD666D 2648 867856037506554
F9B69CAA8364398635F0A4B2F94C520E206F1EBA49F93AFB3CDAA2C59400FCEF 2552 867856037506554
D63BDF1C5FEF793C9CE5A9FC4C0922F22C00DB2C90B3DD339B2E5E9E71B7CAE1 2544 867856037506554
CB01BC3AEFF75FEF42AC067705D87378A339998843DBE606D2DBB5F7ADB90742 2552 867856037506554
7E93A17145EF6470C0EC198BACBBB84718EC08188B69B52CDD509029ABF91081 2544 867856037506554
C35B0381E456ED0519FA6C8FF390D3012410F6E557970BA307CFDA8AEF58CF31 2556 867856037506554
85530D2832499EEB2668CBE58F7A52C0A695266423D29849D45E8FAAF5AA6FBB 2548 867856037506554
9FE51E491189192E0122FA2F3E81C6710A20E8DDC77A082AF12E304C76026BEE 2548 867856037506554
010873040A46F0304D186F16A421797A967287489B37C2DFE4DED14D03B774C9 2548 867856037506554
E3416781A8EC8B851C41FF1C321478BD592F8B7FAE4E5FFF58A195EBA42CA7B4 2548 867856037506554
B865C77B72487D9C8075EBFE0772CE0F7BD829CB9C8874D71C1B1BB643F14050 2544 867856037506554
52B360E2E366FC16285EC3BDAB0F061AAE44B195132513338E2A0C4FC4EE1330 2644 867856037506554
BD5A44F9FD03D9DBFEA99697AB28A4D71DB0AB339DD326ADD7D9D95D555D317A 2728 867856037506554
8BADC4476F538671BCF04E2675A79BB533FF5B4C9DABBDAC88CF9D042ABDE8F6 2548 867856037506554
D2B3822F2124B2E9340F5D7F842FC61D0A6A62A529D879AD3CCF4146EB860975 2544 867856037506554
A346907C98B163995C2A548EB719DC532042A5452238978724412432BC24DF52 2648 867856037506554
2C67F8703807DF84051D7D4F047A8122C3DE7F2517822DDC430C6593EA038DA9 2636 867856037506554
95ACDADAB5C3E7C6D99DA294D84A1E6494586439702EAA2117F38D9B13573FA9 2552 867856037506554
FA8532175B3C11AF1445D358FAF0070C37F7BF67100F9A1DC07CE2CA8776204D 2544 867856037506554
BE2F3317627C3D609DEFDD38E4198245BF314A9F9076944EEE3FAE4CD69C98E5 2540 867856037506554
8F89F8898DB96A3DCE28A1F4F7D93F56DB48EAE88E180FEED2A1EF335CC231B9 2548 867856037506554
0C9C55877C3324DD29FDD8A3CBF9FEF66B3C7921662A240704328D87660453C3 2636 867856037506554
D5396F4E8A1D19C55D6F7EFE4C3CE3DC60650A0F9E6434DAE29CD736A6D3BBEA 2552 867856037506554
5ED50F1056E2C3A5BCF1F3973614F3B65B4A31936369193D42C73D007106CB63 2636 867856037506554
34DF3975862BE986A616AC890D372BB760F3A5ABAF58C9C0FE1C7F33705BC357 2644 867856037506554
6A9B981E4F0933263E173B19D640F3E79F25AC1D427A46DD862A415A07F656BB 2552 867856037506554
5D8D1A6FE88673057070D3B58E41565F3A3FBB223CA41CB8A0B0EF74BE931BDD 2548 867856037506554
6F13FB8F470A6CDEAB53421F45919988A95E8182379E638456DB3054F9A45F25 2640 867856037506554
EFCB6CCE79ADB69B27BE28BF7D5CDC4F4619420929EEA37D0F6D93056700A59F 2544 867856037506554
8E8F065637217ECD7D0EE3E574A698C221EBAAD5F2EA981E1DC919A946602F06 2640 867856037506554
44AB5FA3C0428FFFB28C254402D2A06BDC727E96FE8E20B93E70DE4062302557 2552 867856037506554
16F06648BC5F8FD388E4B5E1F1E028A1BE7B12A3C76B44897254F2BF8D8E3A23 2544 867856037506554
2E1D37685D391BB2A7476CA01BADC15616317B006B402CD07E0097353A5FF1E2 2828 867856037506554
41504231FED799F25AC986FD99A63833CC0B6E9F1D529C43B49E1FAE97D74C54 2640 867856037506554
D09CE0974728673377178881F285D5AE86B70FE43E99001AFABF148DF4249DF7 2544 867856037506554
67DB4076645109A35DE219016E296251CB2DAA28A11609761DDBE13AED06CDFB 2552 867856037506554
BA810CD35F1991771B6F1F576CE219274B3BA30789F12DD4588F92589E164F8F 2644 867856037506554
3197FF824964C1F544D3BEFAD0FFAE8CC91D613BD9B3B334DC5551CB9E3C12CB 2552 867856037506554
FA54AE3A5BB3BF431DC568F2DE97F51B11D00F922239E4EDD97E7FA62376B11F 2548 867856037506554
E0C7D8D5048E4F4361F4B2ACC18E2F56EA791DA167B4580AEDB23663402A9EA0 2640 867856037506554
F44154AAE7D027671D469201BBC2887E01F9CBB22AD912D4E3C8A952B9862389 2640 867856037506554
99F0D28470FC995E5743D049A7B4D94497E9FFD2446AB0DA9A2293AD07C06A0B 2644 867856037506554
2FB2274AAA4F18E18E8FC3BF0B8859133BC467622303626254C8A7C270A24F94 2544 867856037506554
669F1791EDD6E461B0452ED33070722AB8295A7667912AD99DCDB449159A4A4C 2828 867856037506554
538C2E8C22013935AD84836EED02C4B904FAE61295A87486B1F38A51DA4C0FCD 2544 867856037506554
B55F8989B5C2F35FBE3126E01178799ED8F7E649201D6DA682291C5CB1E2DE73 2556 867856037506554
CE1400B7AA87328EEE85E41C9D6C30E42DD7CB4120B1B5E094772698D3C7E8FB 2552 867856037506554
3E44E26F70CBECF32C70ED37ADF249D8DF9189120B3E1372D99052CB448C76AB 2552 867856037506554
A101046BDE46017A5EC0FC0B3CAC77BAD82DB9FA71D810996B2C188CD4E011CE 2640 867856037506554
9790964B314CA75391B247243D1BFEAFDFE4BFE6B7D9B4B9DD93090988B31F53 2548 867856037506554
27DA2355BE40EE4ACB63A317F04CC3B50FD755AFCF61E6973F7C1A2EF7341392 2644 867856037506554
584729EE82110A727810F72D4846276A9D6AB8C16C7B5B63053774E27B9504DA 2548 867856037506554
71F6ED8270295300F8CCBF91F82AC4504011AA25A825DC35037D11654C62A480 2632 867856037506554
4F785B8C5C812E5E9C70E7B2F7E0502C851BACEA7600526E86C3D0825165D9C2 2552 867856037506554
8AE92DE3212D22AEF7E2690EF77A0140F74AAA576F9F6614EB03717FF24A2C1B 2540 867856037506554
06E05369A8E58FB946DCBF4BA1E04A4EB547720C2EBAC2E4D734C2CAED59DDC4 2544 867856037506554
0B35FFA9E0F6D32EFCD83798D0B009F8924DAEC99950FD850A36CCA61705AFC8 2548 867856037506554
33ABEA228EC81EC00264E08041F04B219A8C5C8EA6F6544947EC90BE06560980 2544 867856037506554
2976486E6E5E46788551E94BE3B0D8CCD9FE4E3F5FEB9FB6D1B2BA883397FB4C 2648 867856037506554
85BF376BDB7BD5732BA3111B7B82BCE0F847838093492AC893232FC96500A2DF 2548 867856037506554
482320982BEFC7C2345B5AD3477B3BCFA1A70496F78EBD9D67F07538AC071FD0 2544 867856037506554
42F36A17D58F424BD258AE8222372B88937E7DA7769BCCB7F45EEFC753C692C0 2732 867856037506554
A62222E88FA81B2FF7F8670080EAFB656B1DF4BF0B823D8E057339F8166D18D1 2740 867856037506554
88C1931D10484825EF353D34E5A175F7BC0310A4CA5A425DED16944B09896FFA 2552 867856037506554
EE443D19F1628811394FA0C945907650016BE8ED0A7A1C53D0D331C6EC5B0B66 2552 867856037506554
AB20C6690796F27C54AE28F09CDC12961F04930B31CC180DBAB26BC4AB6A83BF 2544 867856037506554
56BCA04CF30C3138E44DF72B08DDEA2630EDF96A444BAF3462CD0919E97F06B6 2740 867856037506554
E71A8E4F0D61CC38D093C0C7800808F8D8AA6224D9D8AB336577E4A74FEE3D6B 2552 867856037506554
D61C5A57BF135FC95DDC4352B115451FFF7F36D92E8DECB1FD448BF67E643754 2648 867856037506554
0AD4BA5FCD588AD97144CA1B3CEE5AFE2685152F1065227DCDEE5E0E7F5B2CC0 2552 867856037506554
37C6F244CD089C796781D151D7239A22BB17D787E86F5A35191C7E946FFC6579 2556 867856037506554
78911C0E9548EFF2EF851EAC5C2DCD072A92F3D78F96B4C8AA06B52685B93F06 2544 867856037506554
FE3DC7AF2D8F7154A1BB35091CBAED11A96C59946D53DA9805316D0EC2C20328 2548 867856037506554
09D9CD5BDB7DD5457DBB90183EC514C1EB60F6722848CCDBD2F9C01537D1146D 2548 867856037506554
6E65B2248D8C826FC64D818D6937258463A38386FABEF40D15FFAE490B5497C6 2552 867856037506554
C35E4DA27120C9F67C59C1B81ED208443325AB8947EF76750A7D750D66F504D4 2636 867856037506554
7501FC07AEEE06700C340D0A262E8C9B153131F762EEDC048ED079AEC60B09D6 2560 867856037506554
49ABC39AACE9D3891A9C9D3E218F35BC98750B11BA625E3B09D2F2FF1F62502E 2544 867856037506554
09A315B032D43427BC8E8E4EAD58D4A46D223393788A332142E85343159CD29F 2828 867856037506554
046D7ED15930FB59BA3E22CC92CAE32FE34E9F5C6DDE8FDA5753021842306368 2636 867856037506554
1C1F56E2B47AE91E97873C6D2DC9D3A27B99CA0D17FF7882BA230ADCF87A9436 2736 867856037506554
30AD9B86CFD9B185933EB28D9AE9342A68609519C5FF8CA6B0684CA57DF2C47B 2560 867856037506554
4C879065242E5A1822408789B21AC7C9FFEB3B2E6957FD6F73B50C12686B1B26 2548 867856037506554
74078C4C4EBF2B6AF34945CC55E7E93D961194441AA82F00BE653E0158871109 2548 867856037506554
BC03E4C0DFC6D0244652F659872023FB62A21A08C9CCB1E1A87BB0F70780780C 2732 867856037506554
524ECB7ADD4AA2534F1E5826221606A54F2E1ABA83BB01609784ADFFBA26491C 2556 867856037506554
E1080D2AA2CABE6FE2626E861A27C5145C109245FFC7591EFB26B49A15DD2DE0 2552 867856037506554
8DC3C81A23E9AFBC101624F6BE374D570E66D3D2E3FD48F7C2C22E93126A64DD 2536 867856037506554
6B96C08BA9E4657CD9CEBECF684A36AFCD48C0901E49BAF90137B99A239484B5 2640 867856037506554
360065CCBCC5C02292EA247EE80587A9F809259E03BDB630284DB8514430C2EA 2540 867856037506554
4B02884838FBB6FDA0B84D7B66B4985893482B296ECC25B84F84B37E9EB04A54 2644 867856037506554
26FB24FC4C4544726BEF5D646690D2FD69F58C8EFD73AEE4211752B5924A6421 2544 867856037506554
6744C11DA9E7E7909255471CF9428A753CF91BF70CA09BAC20304D39FE991F0A 2644 867856037506554
6266622E9C6502C3A7B663E7F69F0225EE6FD70006E33931215FF3D85E692EEE 2548 867856037506554
627312FC7B87E64B967D36FA0D3E252AAD4DB7C0F1A5640C0F4FCDE10A5FE178 2552 867856037506554
581B42E11C9615B71ED36FEC33D86253E790B3A26AE4A79ECE64EC1A2E303D3F 2636 867856037506554
EDE7624421335C6AEF5E59D2D8455C895AD25EA148043038B80C5BBA3E79D2DA 2548 867856037506554
754057F61C22278254A900506401745ECFEBAB1BB6B0B05809C84FA2B06B28D8 2544 867856037506554
9E68B7E7F122745695290B5B546E20CE7AD9BF91F11158698C70DCCA8029AE10 2736 867856037506554
0E8E4B69A02AAADA106F87D22C48A7718BF10798D4B5F2C126D29BA09D6A9323 2548 867856037506554
2ADC8A5D0BFEDAD94A25820D85D9474873E8A61807DB932B5D404FA7BE2A6719 2548 867856037506554
54BCDADD9BE4EBE0E166B8772434087394DCDCA5DC50D29A7E7736B883804189 2540 867856037506554
85226C3811A688EFB150678270FCE10B79B3210F5D048F5DB5A2CA4CD607553E 2552 867856037506554
0032E5C20EF2DBEFB0588C847B12C9ED2B9B16708EAA5C70C7670201101D4DF7 2544 867856037506554
F07B89F5DA029854DCA022FEA270572C1EA85D04BD760A9457D596202A2C680B 2552 867856037506554
AA1284424C562C7BCAA743E77421A61182A69CF82009F6ABBABD7201AD6349CF 2544 867856037506554
C2B50EB376F2B9BD3E810288EF6F694FF86EB6682B638F8C87D587B360605F86 2732 867856037506554
0FF9163528C6D7246A6676F7924373A638545D24067F8075925FDBADC6EBDB53 2540 867856037506554
77D3D2E4C5FAE7A8855F3E690D2585D2456F8273CEA5BCBED79D7721FF772A8A 2552 867856037506554
7F4908BB21924EF89EA5BC77941C49146E833166CEB3A2316C2AE3B821D06FCB 2544 867856037506554
BF784D0A2FB22C1A96FF8C99517C1A6847EBD48731FA3B318E984864F4FBDFB1 2644 867856037506554
21F21E1A0453A590DA5487F4DDF096300B728C4714B1BE4CB525C767A81BBC7C 2540 867856037506554
6ED89B39C4583E6C2FFDCD9DBD8B11E4C7DE2859DF6BF951AAFC59049B549BF6 2552 867856037506554
0166F73363C8EDBEFF0951617316731031BD8AAE5C9248AF1B8C93043E6DE6A6 2552 867856037506554
FCAC0110C7049AB9D039CF9DE914D2F20134A2E0E15D82DC0703F209F5EA052C 2544 867856037506554
3466D02F446210545AB4C279647D7EE05BE024C34D6C24E1C315B8FF008ABF44 2548 867856037506554
19C2B3E0B58D69C4155D44672A87B9E0F765B2182F8FCF60A4E0676D7703D875 2640 867856037506554
0B305007ED8F571419D0BD5A8D1BA0A0DBB68FCA5F424D861404A34525B63F43 2652 867856037506554
5AAB9DF2215963D7676B62933893DA4D96F403F4BC2CD01909FC1793F7AF0B87 2540 867856037506554
FD6B4C5726A22D53DEA8B9FECD1C8833230E2CB6D9A9A942D0E83B291F1727CE 2552 867856037506554
D85323C94BA520B24AE5D02687C1AF16CD70F1B6B053822D35FA7C741A69FDAF 2548 867856037506554
3A1193DA60DC264B4AA2FE66DBAB9509E349996460B968AFDA5ACBB16FCA3EC2 2548 867856037506554
C7909CFB32201D9291988AB783EAAA40F3FDF58E8E9B90AE68AFD95596B87BFC 2636 867856037506554
76F1FFC88B4BFCDF5CB6E8D2551456380F6D3A94026CF450DA7565FEA3A25F7B 2648 867856037506554
9DF6BE7F6F8D9EF3D203BEF1EFDE27324909ED75058E8E1B03198EA90C502DD0 2724 867856037506554
BC72E2876D368734ECE7AEDF1E1A08814DF4200C1AC72B2379C517F5E637093E 2548 867856037506554
CE166DFF513F4C1CC556CE05712F25C8D9BF82560AC011B3AA5D2DAA3C822DE8 2548 867856037506554
1A570E2520C6E8ABDB541A332954951D7CFD756E65B78B5BF3038D08376460D0 3100 867856037506554
145BC4E1B7F9D2929FE60465CDD3A512B15A3D3FEAC7A7FD840F3FF3914F789C 2556 867856037506554
FF4B401A31B37C59720722C171503525D4055DD181C0E42878DDB03C725800C8 2544 867856037506554
641D02950C6F3187FC2A4CD0BB9B31CFFF2F9218B5AC8385FDAEF2D0C98A2D46 2552 867856037506554
6A452E25C1D42A70B190BA7F15DA21A684A47D8E3319EF690D8BE21D1F37E793 2540 867856037506554
BA430FD71B3FDE6D5B1FF9C8B0E85AF7708ED2931104BA27B94E81633C72F4FA 2736 867856037506554
41FFF1F1D3120EEED393F92496BFDF4397A9E57BEFA3B490302452289B6F7639 2544 867856037506554
7BC9A526CED67DF30CB1D24E657CB4FC43246D2AC44F6F7AD80E46756FC4D75D 2548 867856037506554
46451032DA33599FAA9283FFED29E0491FAE7B82A466CDC496A88427C032FAC2 2548 867856037506554
DBA06C31ED4AFF9B8ED35F4C0ACCA88D0BEAEE0C64D960D43F51DD38DC496C02 2556 867856037506554
5EFB28863FC89D18E949FB338A41849FFE07C8B9EA2F55D3F041EA4FAD38EF7C 2540 867856037506554
3C2969078D641B822F9482B2552CC85B2B58CE0B738FE4F21151575249D3D664 2548 867856037506554
FED6A1D4111EE6EFAEEE27D5F3CAAC2507512955E81BBF5B0B1BB677AE6F6432 2552 867856037506554
A7A797A0ED8BCE0B2538393D2ADCE42094A1EA084CE13AE09303D833A5283A2A 2544 867856037506554
ED66B58758DE52B09CD31E3B2D7CEEF3F1F699C51F9FCCBC1D86AF8AECAD2CEF 2552 867856037506554
7A177EF19F0445BABEB6AD6B36410284E95B39F315A9301125028390533B87B0 2644 867856037506554
B7C1404A0078741C271CF92EFA168B0BB9247A87EA95C22EF696DD4E71978327 2556 867856037506554
D64AF0C410210BAF3441AACD9BA60731C8A1532455DE2E1015875ED25AF1D72E 2728 867856037506554
FAB655A4C240551470CC82F4ACBE9C5B50D6BA95CEBCCD1FDAF165324747DE4C 2644 867856037506554
5C35848678C307081F8E1068B6DD248A3F19FED674DCF53CB7C2E6BBC4383B9E 2548 867856037506554
0B10545AC33CBCA24FBF400AFB2BE811677C40A4FBD37FA1AD6A94A13C4273A0 2644 867856037506554
EA8F0F68878AE940A7A947105B81DBFBCDC3EE56AB02ABFEE536F27BF2A623A8 2548 867856037506554
9B5E241CB9E4E5C140414DBF5D99E3877B8A2E1F421C9743723E2799A4E6217C 2548 867856037506554
944173E7421214D921826AF9B23E167F652015240393468B3DDE0651717B9963 2644 867856037506554
188D6C315C1D2722BBCC99376E68202EEFF59DAA6C3C8FF7059EA2C801319039 2548 867856037506554
90E6589A258A1AFB2AB5FEA3C9A1D6688A28F949AD7F41CA729AB995E629A397 2544 867856037506554
C85CD68951905ADC383E055965A2C98D0E08445F6F6660029D7065558FA08509 2640 867856037506554
D9248A9C50F857933D6411629F9C76D8C0C277873B9A9BD9A7C6CDD1D3CD1407 2636 867856037506554
12EE7F5E5D8D7E9B2BADC15CA216C0A8387B12BCB3E9134BAA3C7B0699D08FF3 2552 867856037506554
78281951D8119DCDA2C8DE3657D5A768D5F2DEF2DF9C024265C462EE0DE110D3 2548 867856037506554
0635877FFF7C78D33A0D3BD53C7FFAF44683B1A853DA822D548E0AD83415E137 2552 867856037506554
E14276B14171FABDC64E07846B43FC7C459021308596836BE0AAB4B87A3AC594 2640 867856037506554
02E873CAAB35BFF9E0E4C19AFDCEBFFC574690F4039F1F013A4187293A39B340 2556 867856037506554
F55803C4AA1034E3E5250A367EA12AB3C809EAEA36DBC6FE4FF0920FCAE0143A 2544 867856037506554
4C0ED50CFA41B91E732F4180C7AFAD9C08D0012737F6963E1FECD0FA0736EAF7 2644 867856037506554
5A05A8CC9CB464822BA7708ED72C1FBE2B692A16B462419F80FDAFB5C081ADF2 2544 867856037506554
4BA989EDFCAD2F54DA04DA4B2423FEA16DA88397533E5AC0E1CAF375E6684FD1 2548 867856037506554
09A62763B63F916F3BDF9EFF0139E2E993E8906DD4F5C8F9063DEA9C8CC5BDF6 2544 867856037506554
4A44E182E934621F0B9B47147C02640FF24CCE7EEE36D2EC93E07F84B8E2D057 2548 867856037506554
6826B52EBCF460F5175DE4821E348B71719B015312F8E600FC7F79C6EE63A4A1 2648 867856037506554

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Изобретатель велосипеда.

Все уже давно придумано до нас. aes256_cbc_enc(); aes256_cbc_dec();

aes256 подразумевает 256 битный ключ, а не 128, как у тебя, потом удивляются почему говнокод не работает.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Andy пишет:

Изобретатель велосипеда.

Все уже давно придумано до нас. aes256_cbc_enc(); aes256_cbc_dec();

aes256 подразумевает 256 битный ключ, а не 128, как у тебя, потом удивляются почему говнокод не работает.


Я конечно не спец по AES, но вы хоть тему то читали?
Задача при одинаковых исходных данных получить разные шифро данные, а какая нахрен разница между AES 128 AES 256?

Мой код кстати работает, и если вы расшифруете исходные данные (естественно при изменении кода шифрования из исходника) - с меня как минимум литр качественного самогона.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Почитал про AES cbc - если я правильно понял то это использование предыдущего результата шифрования блока как код для шифрования следующего, но в целях текущей задачи это хрень, поскольку первый код все равно будет одинаковым.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

andycat пишет:
какая нахрен разница между AES 128 AES 256?
Разница в длине ключа, для aes128 - 128 бит, для aes256 - 256 бит. Если чо, то это 16 и 32 байта, соответственно.

andycat пишет:
если я правильно понял то это использование предыдущего результата шифрования блока как код для шифрования следующего, но в целях текущей задачи это хрень, поскольку первый код все равно будет одинаковым.
Значит неправильно понял. Для cbc режима шифрования используются вектор инициализации и ключ шифрования. Вектор инициализации заполняется случайными значениями и передается вместе с шифром. Даже если шифруешь одно и то же, результат всегда будет разным.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Andy пишет:

andycat пишет:
какая нахрен разница между AES 128 AES 256?
Разница в длине ключа, для aes128 - 128 бит, для aes256 - 256 бит. Если чо, то это 16 и 32 байта, соответственно.

andycat пишет:
если я правильно понял то это использование предыдущего результата шифрования блока как код для шифрования следующего, но в целях текущей задачи это хрень, поскольку первый код все равно будет одинаковым.
Значит неправильно понял. Для cbc режима шифрования используются вектор инициализации и ключ шифрования. Вектор инициализации заполняется случайными значениями и передается вместе с шифром. Даже если шифруешь одно и то же, результат всегда будет разным.

Приведите пример кода, я думаю многие с удовольствием будут использовать для защиты от школьников передачи через интернет.

Logik
Offline
Зарегистрирован: 05.08.2014

andycat пишет:
Задача при одинаковых исходных данных получить разные шифро данные, а какая нахрен разница между AES 128 AES 256?

Если это вся проблема  - используют подсолку. Перед исходными данным для шифрования добавляют пару байт случайного числа (это и есть подсолка в криптографии) и шифруют это в CBC (если все в один блок влезло - то и без CBC годно).  Понятно что при одинаковых данных и разных случайных шифрованые получатся разные. После дешифрации подсолку просто игнорируют.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Logik пишет:

andycat пишет:
Задача при одинаковых исходных данных получить разные шифро данные, а какая нахрен разница между AES 128 AES 256?

Если это вася проблема  - используют подсолку. Перед исходными данным для шифрования добавляют пару байт случайного числа (это и есть подсолка в криптографии) и шифруют это в CBC (если все в один блок влезло - то и без CBC годно).  Понятно что при одинаковых данных и разных случайных шифрованые получатся разные. После дешифрации подсолку просто игнорируют.

И? Что вы показали данной фразой)
Почему раньше пример реального кода не привели)
Теоретик как и обычно я вам говорил)

Logik
Offline
Зарегистрирован: 05.08.2014

andycat пишет:
Logik пишет:

andycat пишет:
Задача при одинаковых исходных данных получить разные шифро данные, а какая нахрен разница между AES 128 AES 256?

Если это вася проблема  - используют подсолку. Перед исходными данным для шифрования добавляют пару байт случайного числа (это и есть подсолка в криптографии) и шифруют это в CBC (если все в один блок влезло - то и без CBC годно).  Понятно что при одинаковых данных и разных случайных шифрованые получатся разные. После дешифрации подсолку просто игнорируют.

И? Что вы показали данной фразой) Почему раньше пример реального кода не привели) Теоретик как и обычно я вам говорил)

andycat, у тя в сообщении количество открывающих и закрывающих скобок не сходится!

ПС. Ты забыл где на форуме раздел в котором умные пишут для богатых? ;)

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Logik пишет:

andycat, у тя в сообщении количество открывающих и закрывающих скобок не сходится!

ПС. Ты забыл где на форуме раздел в котором умные пишут для богатых? ;)

[/quote]

ничего не понял, ну и ладно, спишем на вашу интелектуальную недоразвитость :)

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

andycat пишет:
Приведите пример кода, я думаю многие с удовольствием будут использовать для защиты от школьников передачи через интернет.
aesLib несколько отличается от STMовской библиотеки, но смысл тот же.

//прототип функции
void aes128_cbc_enc(const uint8_t* key, const uint8_t* iv, void* data, const uint16_t data_len);

#define DATALEN 16 //должно быть кратны 16
u8 key[16]={....};//ключ 16 байт
u8 iv[16];//Вектор инициализации, заполняем случайными значениями
u8 data[DATALEN ];//Данные

aes128_cbc_enc(key, iv, data, DATALEN);//Шифруем
Send(iv, DATALEN+16);//отправляем вектор и данные

На приемной стороне получаем вектор инициализации и данные, вызываем

aes128_cbc_dec(key, iv, data, DATALEN);

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Andy пишет:

andycat пишет:
Приведите пример кода, я думаю многие с удовольствием будут использовать для защиты от школьников передачи через интернет.
aesLib несколько отличается от STMовской библиотеки, но смысл тот же.

//прототип функции
void aes128_cbc_enc(const uint8_t* key, const uint8_t* iv, void* data, const uint16_t data_len);

#define DATALEN 16 //должно быть кратны 16
u8 key[16]={....};//ключ 16 байт
u8 iv[16];//Вектор инициализации, заполняем случайными значениями
u8 data[DATALEN ];//Данные

aes128_cbc_enc(key, iv, data, DATALEN);//Шифруем
Send(iv, DATALEN+16);//отправляем вектор и данные

На приемной стороне получаем вектор инициализации и данные, вызываем

aes128_cbc_dec(key, iv, data, DATALEN);

 

Спасибо, посмотрю, попробую.
На другой стороне PHP сервер, так что там уже другая задача будет все это дело разобрать.

Faktorial
Offline
Зарегистрирован: 12.05.2020
<?php
$cryptcipher = "rijndael-128";
$cryptmode = "ecb";
//$text = "5432109876543210";
$text = $_POST['str'];
$key = "0123456789012345";

$str= AESCrypt($text, $key, $cryptcipher, $cryptmode, 0);
echo "Crypt string: ". bin2hex($str). "<br>";
echo $str."<br>";

$str= AESCrypt($str, $key, $cryptcipher, $cryptmode, 1);
echo "Decrypt string: ". bin2hex($str). "<br>";
echo $str."<br>";



/* Функция шифрования/расшифровки строки */
function AESCrypt($text, $key, $cipher, $mode, $encdec)
{
// Открываем модуль шифрования */
$td = mcrypt_module_open($cipher, '', $mode, '');
// Инициализация шифрования
mcrypt_generic_init($td, $key, '');
// Шифрование (или расшифровка)
$cr = ($encdec==0 ? mcrypt_generic($td, $text) : mdecrypt_generic($td, $text));
// Завершаем обработчик шифрования
mcrypt_generic_deinit($td);
// Закрываем модуль шифрования
mcrypt_module_close($td);
// Возвращаем результат
return $cr;
}
?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <title>Test</title>  
   <meta name="" content=""> 
 </head>

<body>
 <form method="POST">
  <input type="text" name="str">
  <input type="submit">
 </form>
</body>
</html>

Здравствуйте! Я начинающий, так сказать, попытался сделать что-то вроде проверочной страницы с полем для ввода зашифрованного сообщения AES128 и применением PHP-скрипта, приведенного здесь. Но вылезли ошибки.. Короче говоря - как расшифровать в HEX данные с контроллера (скетч в начале темы) по средствам PHP? Может кто подправит.. Спасибо заранее!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:
В этом то и суть придумать меняющуюся метку, понятную серверу, но сложно понимаемую злоумышленнику, который например может попытаться передать фальшивые координаты авто с правильным imei. Как таковое шифрование не нужно.

придумал, работает, данные как открытый ключ + добавок индексом из закрытого массива ключей, формируем из этого хэш, на стороне PHP обратная процедура, индекс на двух сторонах синхронизируется