Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
ramblerb

Перевести код из c# на DELPHI

22.03.2014, 12:23. Показов 1181. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using ManagedRC4;
 
namespace LegacyRC4
{
    class Program
    {
        public static string password;
        public static uint uKeySize;
 
        static void CheckVerifier(byte[] verifierBuf)
        {
            MD5 md5Hash = MD5.Create();
 
            // Salt is copied below
            byte[] encryptedVerifier = new byte[16];
            Array.Copy(verifierBuf, 16, encryptedVerifier, 0, 16);
 
            byte[] encryptedVerifierHash = new byte[16];
            Array.Copy(verifierBuf, 32, encryptedVerifierHash, 0, encryptedVerifierHash.Length);
 
            // First, derive the encryption key from the salt 
            // and the password
            byte[] pwdBuf = System.Text.UnicodeEncoding.Unicode.GetBytes(password);
            byte[] pwdHash = md5Hash.ComputeHash(pwdBuf);
 
            // Now create the hashing buffer with the hash of the password 
            // and the salt. Cryptographically, this is not a good approach,
            // but that's how it was done.
            byte[] hashBuf = new byte[21 * 16];
            for (int i = 0; i < 16; i++)
            {
                Array.Copy(pwdHash, 0, hashBuf, i * 21, 5);
                Array.Copy(verifierBuf, 0, hashBuf, i * 21 + 5, 16);
            }
 
            // Get the hash of the previous buffer
            pwdHash = md5Hash.ComputeHash(hashBuf);
 
            // Now factor in the block number
            uint block = 0;
            Array.Copy(pwdHash, 0, hashBuf, 0, 5);
            Array.Copy(BitConverter.GetBytes(block), 0, hashBuf, 5, 4);
 
            pwdHash = md5Hash.ComputeHash(hashBuf, 0, 9);
 
            // The key is always 128-bit
            byte[] rc4Key = new byte[16];
 
            Array.Copy(pwdHash, rc4Key, 16); // 5 bytes = 40 bits
 
            // Now use the ManagedRC4 implementation
            ManagedRC4.RC4 rc4 = new ManagedRC4.RC4();
 
            rc4.Init(rc4Key, (uint)rc4Key.Length);
 
            // Now we need to decrypt the two encrypted elements of the verifier
            rc4.Decrypt(encryptedVerifier, (uint)encryptedVerifier.Length);
            rc4.Decrypt(encryptedVerifierHash, (uint)encryptedVerifierHash.Length);
 
            // Finally, hash the decrypted verifier, and compare
            byte[] hashedVerifier = md5Hash.ComputeHash(encryptedVerifier);
            for (int i = 0; i < hashedVerifier.Length; i++)
            {
                if (hashedVerifier[i] != encryptedVerifierHash[i])
                    throw new Exception("Verifier hash does not match");
            }
 
            md5Hash.Clear();
            Console.WriteLine("Password matches");
 
        }
 
        static void ReadHeader(FileStream inputFile)
        {
            long cbStream = inputFile.Length - inputFile.Seek(0, SeekOrigin.Current);
            byte[] readBuf = new byte[4];
 
            inputFile.Read(readBuf, 0, 4);
            ushort vMajor = BitConverter.ToUInt16(readBuf, 0);
            ushort vMinor = BitConverter.ToUInt16(readBuf, 2);
            // Now check version
            if (vMajor != 1 || vMinor != 1)
            {
                throw new Exception("Incorrect Version");
            }
 
            // Encryption key size
            uKeySize = 40;
 
            // Fixed size verifier
            int verifierSize = 48;
            byte[] verifierBuf = new byte[verifierSize];
            inputFile.Read(verifierBuf, 0, verifierSize);
 
            CheckVerifier(verifierBuf);
        }
 
        static void Main(string[] args)
        {
            try
            {
                Program.password = args[1];
                FileStream inputFile = File.OpenRead(args[0]);
                // Use a Word document to demonstrate this - header is
                // at the start of the 1Table stream
                ReadHeader(inputFile);
            }
            catch (Exception err)
            {
                Console.Write(err);
            }
 
        }
 
    }
}
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2014, 12:23
Ответы с готовыми решениями:

Как перевести этот код на код Delphi
uses crt; const nmax=100; var a:arrayof integer; n,i,k,j,x:integer; begin clrscr; randomize; repeat write('Размер...

Перевести код с C# на Delphi
Как будет выглядеть эти функции на Delphi =============================== Сохранение данных моего профиля ...

перевести код из Си в Delphi
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; void main() {int a,b,c; printf(&quot;vvedi chisla\n&quot;); scanf(&quot;%d%d%d&quot;,&amp;a,&amp;b,&amp;c); if (a&gt;b) ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2014, 12:23
Помогаю со студенческими работами здесь

Перевести код с С++ на Delphi
код #include &lt;fstream&gt; #include &lt;vector&gt; bool possible(int n,unsigned short mask1,unsigned short mask2) { if(mask1 &amp; mask2) ...

Перевести код c в delphi
Помогите перевести код c++ в delphi. // 3.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot;...

Перевести код с Delphi
Помогите перевести участок кода, написанный на Delphi в код C#. begin if (Image5.Left+Image5.Width &gt; Image6.Left) then if...

Перевести код с С на Delphi
#define IOCTL_READ (0x800&lt;&lt;2)|(0x22&lt;&lt;16) #define IOCTL_WRITE (0x801&lt;&lt;2)|(0x22&lt;&lt;16) Есть такой код на C, на делфи это что то вроде...

Перевести код с Delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru