რუსული მაგმა. როგორ მუშაობს შიდა ბლოკის შიფრის ალგორითმი. ავტორიზაციის და დაშიფვრის დაყენება wl-zzoge გრძელდება მხოლოდ წევრების მიერ

ჩვენი „პერვერსიები იმპორტის ჩანაცვლებით“ (დიდი ხნის წინ იყო, ევგენი სადოქტორო დისერტაციაზე მუშაობს და ჩვენ ყველანი ველოდებით, რომ შესაძლებელი იყოს მისი სტატიების ხელმოწერა „პროფესორთან“ 😉 - შენიშვნა რედ.) ჩვენ დეტალურად გაეცნო Grasshopper დაშიფვრის ალგორითმს, რომელიც განსაზღვრულია GOST 34.12-2015. ამ ალგორითმის გარდა, GOST-ში აღწერილია კიდევ ერთი, დაშიფრული ბლოკის სიგრძით 64 ბიტი, რომელსაც "მაგმა" ჰქვია.

ეს ალგორითმი არის ბლოკის შიფრის ალგორითმის ზუსტი ასლი ძველი GOST 28147-89-დან, ერთი გამონაკლისის გარდა. ახალი GOST 34.12-2015 განსაზღვრავს და ადგენს პერმუტაციის ცხრილს არაწრფივი ბიექტიური ტრანსფორმაციისთვის, რომელიც არ იყო ძველ GOST 28147-89-ში და მისი ელემენტების დავალება მთლიანად გადაეცა ამ ალგორითმის განმახორციელებელ ადამიანებს. თეორიულად, თუ თქვენ თავად განსაზღვრავთ პერმუტაციის ცხრილის ელემენტებს და დაიცავთ ცხრილს საიდუმლოდ, ეს გაზრდის დაშიფვრის ალგორითმის სიძლიერეს (ამის გამო, გასაღების სიგრძე რეალურად იზრდება), თუმცა, როგორც ხედავთ, GOST-ის დეველოპერები 34.12-2015 გადაწყდა მომხმარებლებისთვის დამოუკიდებლობის სტანდარტის ჩამორთმევა.

როგორც უკვე აღვნიშნეთ, მაგმა ალგორითმში დაშიფრული ბლოკის სიგრძე 64 ბიტია. დაშიფვრის გასაღების სიგრძეა 256 ბიტი.

გაფრთხილება

GOST-ის წაკითხვისას გაითვალისწინეთ, რომ ტესტის მიმდევრობების ყველა 8-ბაიტიანი მასივი, ნულოვანი ბაიტი არის მასივის ბოლოს და მეშვიდე, შესაბამისად, დასაწყისში (თუ ყურადღებით წაიკითხავთ სტატიებს Stribog-ისა და Grasshopper-ის შესახებ, მაშინ ჩვენი კრიპტოსტანდარტების ეს თვისება ნაცნობი უნდა იყოს).

ცოტა თეორია

აღწერილ ალგორითმში დასაშიფრავი ბლოკი (შეგახსენებთ, რომ მისი სიგრძე 64 ბიტია) იყოფა თანაბარი სიგრძის ორ ნაწილად (32 ბიტი) - მარჯვნივ და მარცხნივ. შემდეგ ოცდათორმეტი გამეორება შესრულებულია ორიგინალური 256-ბიტიანი დაშიფვრის გასაღებიდან მიღებული განმეორებითი კლავიშების გამოყენებით.


ყოველი გამეორების დროს (გარდა ოცდათორმეტისა), ფეისტელის ქსელზე დაფუძნებული ერთი ტრანსფორმაცია ხორციელდება დასაშიფრავი ბლოკის მარჯვენა და მარცხენა ნახევარზე. ჯერ მარჯვენა მხარეს ემატება მოდული 32 მიმდინარე გამეორების ღილაკით, შემდეგ მიღებული 32-ბიტიანი რიცხვი იყოფა რვა 4-ბიტიან რიცხვად და თითოეული მათგანი გარდაიქმნება სხვა 4-ბიტიან რიცხვად პერმუტაციის ცხრილის გამოყენებით (თუ თქვენ გახსოვდეთ, წინა ორ სტატიაში მას ეწოდა არაწრფივი ბიექტიური ტრანსფორმაცია). ამ კონვერტაციის შემდეგ მიღებული რიცხვი ციკლურად მარცხნივ გადაინაცვლებს თერთმეტი ციფრით. შედეგი შემდეგ იხსნება ბლოკის მარცხენა ნახევარში. შედეგად მიღებული 32-ბიტიანი რიცხვი იწერება ბლოკის მარჯვენა ნახევარში, ხოლო მარჯვენა ნახევრის ძველი შიგთავსი გადადის ბლოკის მარცხენა ნახევარში.



ბოლო (ოცდათორმეტი) გამეორებისას მარჯვენა ნახევარი გარდაიქმნება ისევე, როგორც ზემოთ აღწერილი, რის შემდეგაც შედეგი იწერება ორიგინალური ბლოკის მარცხენა მხარეს, ხოლო მარჯვენა ნახევარი ინარჩუნებს თავის მნიშვნელობას.

გამეორების კლავიშები მიღებულია ორიგინალური 256-ბიტიანი გასაღებიდან. ორიგინალური გასაღები დაყოფილია რვა 32-ბიტიან ქვეკლავად და შემდეგ გამოიყენება შემდეგი თანმიმდევრობით: სამჯერ პირველიდან მერვემდე და ერთხელ მერვედან პირველამდე.



გაშიფვრისთვის გამოიყენება გამეორებების იგივე თანმიმდევრობა, რაც დაშიფვრისას, მაგრამ გასაღებების თანმიმდევრობა შებრუნებულია.


ასე რომ, თეორიაში მოკლე და მცირე ჩაძირვის შემდეგ, დავიწყოთ კოდირება...

სტანდარტის ძირითადი ფუნქციები

ვინაიდან ალგორითმი იყენებს 32-ბიტიან ბლოკებს (ე.წ. ორობითი ვექტორების სახით), ჯერ სწორედ ამ ბლოკს განვსაზღვრავთ:

// ბლოკის ზომა არის 4 ბაიტი (ან 32 ბიტი) #define BLOCK_SIZE 4 ... // განსაზღვრეთ ვექტის ტიპი, როგორც 4 ბაიტიანი მასივი typedef uint8_t vect;

ორი ბინარული ვექტორის მიმატება მოდულო 2

პირველი ვექტორის თითოეული ბაიტი იხსნება მეორე ვექტორის შესაბამისი ბაიტით და შედეგი იწერება მესამე (გამომავალი) ვექტორზე:

სტატიკური სიცარიელე GOST_Magma_Add(const uint8_t *a, const uint8_t *b, uint8_t *c) (int i; for (i = 0; i< BLOCK_SIZE; i++) c[i] = a[i]^b[i]; }

ორი ბინარული ვექტორის მიმატება მოდულო 32

ეს ფუნქცია მსგავსია ფუნქციის სახელწოდებით „დამატება რგოლში ნარჩენების მოდულში n-ის სიმძლავრეზე“ სტრიბოგის ალგორითმიდან, გარდა იმისა, რომ n ჩვენს შემთხვევაში იქნება 32 და არა 512, როგორც სტრიბოგის სტანდარტში. ორი ორიგინალური 4-ბიტიანი ვექტორი წარმოდგენილია ორი 32-ბიტიანი რიცხვის სახით, შემდეგ ემატება, გადადინება, ასეთის არსებობის შემთხვევაში, უგულვებელყოფილია:

სტატიკური სიცარიელე GOST_Magma_Add_32(const uint8_t *a, const uint8_t *b, uint8_t *c) ( int i; ხელმოუწერელი int შიდა = 0; for (i = 3; i >= 0; i--) ( შიდა = a[i] + b[i] + (შიდა >> 8); c[i] = შიდა & 0xff; ) )

არაწრფივი ბიექტიური ტრანსფორმაცია (T ტრანსფორმაცია)

Stribog და Grasshopper ალგორითმებისგან განსხვავებით (სხვათა შორის, ამ ტრანსფორმაციას იქ S-ტრანსფორმა ეწოდება), პერმუტაციის ცხრილი აქ სხვაგვარად გამოიყენება:

სტატიკური ხელმოუწერელი char Pi= ( (1,7,14,13,0,5,8,3,4,15,10,6,9,12,11,2), (8,14,2,5,6 ,9,1,12,15,4,11,0,13,10,3,7), (5,13,15,6,9,2,12,10,11,7,8,1,4 ,3,14,0), (7,15,5,10,8,1,6,13,0,9,3,14,11,4,2,12), (12,8,2,1 ,13,4,15,6,7,0,10,5,3,14,9,11), (11,3,5,8,2,15,10,13,14,1,7,4 ,12,9,6,0), (6,8,2,3,9,10,5,12,1,14,4,7,11,13,0,15), (12,4,6 ,2,10,5,11,9,14,8,13,7,0,3,15,1) );

ვინაიდან სტანდარტის ტექსტში (უცნობი ტრადიციის მიხედვით) ნულოვანი ბაიტი იწერება ბოლოს, ხოლო ბოლო - დასაწყისში, მაშინ იმისათვის, რომ პროგრამამ სწორად იმუშაოს, ცხრილის რიგები უნდა დაიწეროს საპირისპირო თანმიმდევრობით, და არა როგორც სტანდარტშია ნათქვამი.

თავად T კონვერტაციის ფუნქციის კოდი შემდეგია:

სტატიკური სიცარიელე GOST_Magma_T(const uint8_t *in_data, uint8_t *out_data) (uint8_t პირველი_ნაწილი_ბაიტი, წამი_ნაწილ_ბაიტი; int i; for (i = 0; i< 4; i++) { // Извлекаем первую 4-битную часть байта first_part_byte = (in_data[i] & 0xf0) >> 4; // ამოიღეთ ბაიტის მეორე 4-ბიტიანი ნაწილი sec_part_byte = (in_data[i] & 0x0f); // ჩანაცვლების შესრულება ჩანაცვლების ცხრილის მიხედვით first_part_byte = Pi; sec_part_byte = Pi; // „წებება“ ორივე 4-ბიტიანი ნაწილის უკან ბაიტში out_data[i] = (first_part_byte<< 4) | sec_part_byte; } }

გაგრძელება ხელმისაწვდომია მხოლოდ წევრებისთვის

ვარიანტი 1. გაწევრიანდით "საიტის" საზოგადოებაში, რათა წაიკითხოთ საიტზე არსებული ყველა მასალა

საზოგადოებაში გაწევრიანება განსაზღვრულ პერიოდში მოგცემთ წვდომას ჰაკერების ყველა მასალაზე, გაზრდით თქვენს პერსონალურ კუმულატიურ ფასდაკლებას და საშუალებას მოგცემთ დააგროვოთ პროფესიონალური Xakep Score რეიტინგი!

Comodo Disk Encryption იცავს ღირებულ ინფორმაციას სისტემის ნებისმიერი მყარი დისკის დანაყოფის დაშიფვრით. დაშიფვრა არის მონაცემთა კოდირების პროცესი ალგორითმის გამოყენებით, რომელიც ცნობილია მხოლოდ დაშიფვრის პროგრამისთვის, ისე, რომ სხვამ ვერ შეძლოს მონაცემების წაკითხვა. დაშიფვრა ხდება "დაფრენისას", ასე რომ არ არის საჭირო კომპიუტერის გამორთვა ან გადატვირთვა. Comodo Disk Encryption გთავაზობთ დაშიფრულ მონაცემებზე წვდომის რამდენიმე ვარიანტს, რომელთაგან შეგიძლიათ აირჩიოთ თქვენი მოთხოვნებიდან გამომდინარე. პირველი ვარიანტი არის პაროლის დაყენება და მისი გამოყენება ყოველ ჯერზე, როცა გსურთ დაცულ მონაცემებზე წვდომა. წვდომის მეორე მეთოდი არის USB მოწყობილობის გამოყენება, როგორც "გასაღები" მონაცემთა შესანახად. USB მონაცემებზე წვდომისთვის, მოწყობილობა უნდა იყოს დაკავშირებული კომპიუტერთან. და მესამე ვარიანტი არის პაროლის და USB მოწყობილობის ერთდროულად გამოყენება. ეს ვარიანტი ყველაზე საიმედოა. მონაცემების გაშიფვრის მიზნით, დაგჭირდებათ მოწყობილობის დაკავშირება და პაროლის შეყვანა.
ღირებული მონაცემების შენახვა და დაცვა არის საკითხი, რომელიც იყო და იქნება ძალიან აქტუალური. სტაციონარული და პორტატული კომპიუტერების კონფიდენციალური ინფორმაციის შინაარსი დაკავშირებულია ამ ინფორმაციის დაკარგვის გარკვეულ რისკთან, რომელიც მუდმივად იზრდება. და მხოლოდ პროგრამული უზრუნველყოფის გამოყენებით, როგორიცაა Comodo's Disk Encryption, შეუძლია ამ პრობლემის გადაჭრა. ნუ უგულებელყოფთ ღირებული მონაცემების დაშიფვრას - ეს დაიცავს მათ თქვენი კომპიუტერის სხვა მომხმარებლებისგან, ასევე ჰაკერების ქსელის შეტევებისგან.

ძირითადი მახასიათებლები და ფუნქციები

  • მონაცემთა დაცვა ჰაკერებისგან და ნებისმიერი სხვა არაავტორიზებული წვდომისგან.
  • მაშინაც კი, თუ თქვენი ლეპტოპი მოიპარეს, თავდამსხმელები ვერ შეძლებენ დაშიფრული მონაცემების წაკითხვას.
  • თავისუფლად მიეცით საშუალება სხვა ადამიანებს გამოიყენონ თქვენი კომპიუტერი, რადგან იცოდეთ, რომ მგრძნობიარე მონაცემები არ მოხვდება მათ თვალში.

სპეციალური მოთხოვნები

32-ბიტიანი დაშიფვრა

  • Windows 7 - 32 ბიტი / Windows Vista / Windows XP / Windows 2000 / Windows Server 2003

64-ბიტიანი დაშიფვრა

  • Windows 7 - 64 ბიტი / Windows Vista / Windows XP / Windows Server 2003
  • 32 მბ ოპერატიული მეხსიერება და 6 მბ თავისუფალი ადგილი დისკზე

ამბავი

Blowfish-მდე არსებული ალგორითმები ან საკუთრებაში იყო ან არასანდო, ზოგი კი საიდუმლოდ ინახებოდა (მაგალითად, ჯოხი). ალგორითმი შეიქმნა 1993 წელს ბრიუს შნაიერის მიერ, როგორც მოძველებულის სწრაფი და უფასო ალტერნატივა. DESდა დაპატენტებული იდეა. ავტორის თქმით, Blowfish-ის დიზაინის კრიტერიუმები იყო:

  • სიჩქარე (32-ბიტიან პროცესორებზე დაშიფვრას სჭირდება 26 ციკლი);
  • სიმარტივე (მარტივი ოპერაციების გამოყენების გამო, რომლებიც ამცირებს შეცდომის ალბათობას ალგორითმის განხორციელებაში);
  • კომპაქტურობა;
  • რეგულირებადი გამძლეობა.

ალგორითმის აღწერა

Პარამეტრები

  • საიდუმლო გასაღები K (32-დან 448 ბიტამდე)
  • 32-ბიტიანი დაშიფვრის გასაღებები P1-P18
  • 32-ბიტიანი ჩანაცვლების ცხრილები S1-S4: S1 S1 .. S1 S2 S2 .. S2 S3 S3 .. S3 S4 S4 .. S4

F(x) ფუნქცია

დაშიფვრის ალგორითმი 64-ბიტიანი ბლოკისთვის ცნობილი მასივით P და F(x)

Feistel ქსელი დაშიფვრაში

Blowfish ალგორითმი

დაყოფილია 2 ეტაპად:

  1. მოსამზადებელი - დაშიფვრის გასაღებების გენერირება საიდუმლო გასაღების გამოყენებით.
    • P და S მასივების ინიციალიზაცია საიდუმლო გასაღებით K
      1. განახორციელეთ P1-P18 ინიცირება ფიქსირებული სტრიქონით, რომელიც შედგება pi-ის მანტისას თექვსმეტობითი ციფრებისგან.
      2. XOR ოპერაცია შესრულებულია P1-ზე K კლავიშის პირველი 32 ბიტით, P2-ზე მეორე 32-ბიტით და ა.შ.
        თუ გასაღები K უფრო მოკლეა, მაშინ ის ციკლურად არის გადანაწილებული.
    • გასაღებების და შემცვლელი ცხრილების დაშიფვრა
      1. 64-ბიტიანი ბლოკის დაშიფვრის ალგორითმი, ინიციალიზებული გასაღებების P1-P18 და ჩანაცვლების ცხრილის S1-S4 გამოყენებით, შიფრავს 64-ბიტიან ნულოვანი (0x00000000000000000) სტრიქონს. შედეგი იწერება P1, P2.
      2. P1 და P2 დაშიფრულია გასაღებების და შემცვლელი ცხრილების შეცვლილი მნიშვნელობებით. შედეგი იწერება P3 და P4.
      3. დაშიფვრა გრძელდება მანამ, სანამ ყველა გასაღები P1-P18 და შემცვლელი ცხრილები S1-S4 არ შეიცვლება.
  2. ტექსტის დაშიფვრა მიღებული კლავიშებით და F(x), წინასწარი დაყოფით 64 ბიტიან ბლოკებად. თუ შეუძლებელია საწყისი ტექსტის ზუსტად დაყოფა 64 ბიტიან ბლოკებად, სხვადასხვა დაშიფვრის რეჟიმებიბლოკების მთელი რიცხვისაგან შემდგარი შეტყობინების აგება. სულ საჭირო მეხსიერება 4168 ბაიტი: P1-P18: 18 ცვლადი 32 ბიტიანი; S1-S4: 4x256 ცვლადი 32 ბიტიანი.

გაშიფვრა მსგავსია, მხოლოდ P1-P18 გამოიყენება საპირისპირო მიზნით.

P- მასივის საწყისი მნიშვნელობის შერჩევა და ჩანაცვლების ცხრილი

არაფერი განსაკუთრებული არ არის პი-ს ციფრებში. ეს არჩევანი არის ალგორითმთან დაკავშირებული მიმდევრობის ინიციალიზაცია, რომელიც შეიძლება იყოს შენახული ალგორითმის ნაწილად ან საჭიროების შემთხვევაში მოძიება ( პი (ნომერი)). Როგორც მითითებულია შნეიერი: "E-ის ციფრების შემთხვევითი ბიტების ნებისმიერი სტრიქონი, RAND ცხრილი ან შემთხვევით გენერირებული ციფრები იმოქმედებს."

კრიპტო წინააღმდეგობა

  • სუსტი S-box (და სუსტი გასაღები, რომელიც ქმნის მას) ნიშნავს, რომ არსებობს i, j, N=(1,2,3,4): SN[i]==SN[j]

კრიპტოგრაფიული სიძლიერე ძირითადად დამოკიდებულია F(x-ზე). ეს მიუთითა სერჟ ვოდენეიმ, საუბრისას სუსტი კლავიშების მცირე კლასის არსებობაზე (სუსტი S-ბოქსების გენერირება): სუსტი S-ბოქსის გამოჩენის ალბათობა არის . მან ასევე განიხილა Blowfish-ის გამარტივებული ვერსია, ცნობილი ფუნქციით F(x) და სუსტი გასაღებით. ეს ვარიანტი მოითხოვს შერჩეულ ღია ტექსტებს (t არის რაუნდების რაოდენობა, ხოლო სიმბოლოები ნიშნავს რიცხვის მთელი ნაწილის მოპოვების ოპერაციას). ამ შეტევის გამოყენება შესაძლებელია მხოლოდ ალგორითმისთვის . ეს მოითხოვს უბრალო ტექსტებს, ხოლო ვარიანტი ცნობილი F(x) და შემთხვევითი გასაღებით მოითხოვს ღია ტექსტებს. მაგრამ ეს შეტევა არ არის ეფექტური Blowfish-ისთვის 16 რაუნდით.

ჯონ კელსიმ შეიმუშავა შეტევა, რამაც საშუალება მისცა 3-ჯერადი Blowfish გატეხილიყო. ის ეყრდნობა იმ ფაქტს, რომ მოდულის დამატება და XOR არ არის კომუტაციური.

შეუძლებელია წინასწარ განსაზღვრო არის თუ არა გასაღები სუსტი. თქვენ შეგიძლიათ შეამოწმოთ მხოლოდ გასაღების გენერირების შემდეგ.

კრიპტოგრაფიული სიძლიერის რეგულირება შესაძლებელია დაშიფვრის რაუნდების რაოდენობის (P მასივის სიგრძის გაზრდით) და გამოყენებული S-ბოქსების რაოდენობის შეცვლით. გამოყენებული S-box-ების რაოდენობის შემცირება ზრდის სუსტი კლავიშების ალბათობას, მაგრამ ამცირებს გამოყენებული მეხსიერების რაოდენობას. Blowfish-ის 64-ბიტიან არქიტექტურაზე ადაპტირებით, შეგიძლიათ გაზარდოთ S-box-ის რაოდენობა და ზომა (და შესაბამისად მეხსიერება P და S მასივებისთვის), ასევე გაართულოთ F(x) და ზემოაღნიშნული შეტევები შეუძლებელია. ასეთი F(x) ფუნქციის მქონე ალგორითმისთვის.

მოდიფიკაცია F(x): 64-ბიტიანი ბლოკი იკვებება შესასვლელში, რომელიც იყოფა რვა 8-ბიტიან ბლოკად (X1-X8). შედეგი გამოითვლება ფორმულით, სადაც
დღემდე (2008 წლის ნოემბერი) არ არსებობს შეტევები, რომლებიც შეიძლება განხორციელდეს გონივრულ დროში. წარმატებული შეტევები შესაძლებელია მხოლოდ განხორციელების შეცდომების გამო.

ალგორითმის მაგალითი

Blowfish ალგორითმის თავისუფლად განაწილებული ვერსიის მაგალითი მოქმედებაში.
Პარამეტრები:გასაღების ზომა: 448 ბიტიბლოკის ზომა: 64 ბიტიანირაუნდების რაოდენობა: 16 რეჟიმი: ECB

აპლიკაციები

  • პაროლის ჰეშირება
  • ელ.ფოსტისა და ფაილების დაცვა
    • GnuPG(უსაფრთხო შენახვა და გადაცემა)
  • საკომუნიკაციო ხაზებში: შეკვრა ელგამალი(დაპატენტებული არ არის) ან RSA(პატენტი დასრულდა 2000 წელს) და ამის ნაცვლად Blowfish იდეა
  • უსაფრთხოება ქსელისა და სატრანსპორტო ფენის პროტოკოლებში
    • PuTTY(ქსელის ფენა)
    • SSH(სატრანსპორტო ფენა)
    • openvpn(დაშიფრული არხების შექმნა)

სიმეტრიულ კრიპტოსისტემებთან შედარება

ალგორითმის დაშიფვრის სიჩქარე დიდწილად დამოკიდებულია გამოყენებული ტექნიკასა და ბრძანებების სისტემაზე. სხვადასხვა არქიტექტურაზე, ერთ ალგორითმს შეუძლია მნიშვნელოვნად აჯობოს კონკურენტებს სიჩქარით, ხოლო მეორეზე, სიტუაცია შეიძლება გაათანაბროს ან თუნდაც შეიცვალოს საპირისპირო მიმართულებით. უფრო მეტიც, პროგრამული უზრუნველყოფის განხორციელება დიდად არის დამოკიდებული გამოყენებული შემდგენელზე. ასამბლეის კოდის გამოყენებამ შეიძლება გაზარდოს დაშიფვრის სიჩქარე. დაშიფვრის სიჩქარეზე გავლენას ახდენს mov, add, xor ოპერაციების შესრულების დრო და ოპერაციების შესრულების დრო იზრდება RAM-ზე წვდომისას (mov, add, xor სერიის პროცესორებისთვის პენტიუმიდაახლოებით 5-ჯერ). Blowfish უკეთესად მუშაობს ქეშის გამოყენებისას ყველა ქვეკლავიშის შესანახად. ამ შემთხვევაში ის უსწრებს ალგორითმებს DES , იდეა. Ჩამორჩენა იდეამოდულის გამრავლების ოპერაცია. სიჩქარე ორი თევზიშეიძლება ღირებულებით ახლოს იყოს Blowfish-თან უფრო დიდი დაშიფრული ბლოკის გამო.

მიუხედავად იმისა, რომ Blowfish უფრო სწრაფია ვიდრე მისი კოლეგები, მაგრამ ძირითადი ცვლილებების სიხშირის გაზრდით, მისი მუშაობის ძირითადი დრო წავა მოსამზადებელ ეტაპზე, რაც ასჯერ ამცირებს მის ეფექტურობას.

იხილეთ ასევე

ბმულები

  • სერჟ ვოდენეი.Blowfish-ის სუსტ კლავიშებზე
  • Dieter Schmidt.Kaweichel, Blowfish-ის გაფართოება 64-ბიტიანი არქიტექტურისთვის
გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი უნდა გაიგზავნოს ჩვენს რედაქტორებს: