Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2007, 15:39   #1
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию работа с текстом (алгоритм шифрования)

например у меня есть ID (тип string но содержит цифры)
ID у меня равно 123456789(количество цыфер разное)
как мне с этого ID сделать пароль для программы по принцыпу замены

1 2 3 4 5 6 7 8 9 -то что было(естессно без пробелов!)
V8P1K3P0D2Z - ДЛИНА В 2 РАЗА БОЛЬШЕ

СУТЬ ВАПРОСА

КАК МНЕ в этом ID прочитать значение каждой цифры и
1) заменить мою цифру на цифру из "таблички кодов"
2) как после каждой цифры(исходной!) дописать например букву по тойже табличке ?
3)как выполнить обратную операцию 2 и 1 ?
табличка :
------------------ эта например табличка по каторой надо менять цфферку на буковку (естессноэто примердля понятия смысла)
1 2 3 4 5 6 7 8 9 0
v o n e m u t z e d
------------------

------------------это кусочек таблички по каторой меняются буковки
a b c d e g h i j k
r h z y w m o s h
------------------
(все таблички у меня в уме ну или на бумажке ! покачто ! естессно не stringgrid !)

как сделать замену по умному а не так :
if poluchaemaiabukva = 'a' then vidavaemaiabekva:='L' else
if ........ else
if......(естессно надо менять получаемые буквы на выдаваемые согласно табличке...)
???

Надеюсь паможете без критики ! заранее сэнкс !
---

Последний раз редактировалось Квэнди; 11.10.2007 в 15:43.
GAGARIN-NEW вне форума Ответить с цитированием
Старый 11.10.2007, 18:49   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Цитата:
Надеюсь паможете без критики ! заранее сэнкс !
Без критики так без критики, но google это великая вещь .

Тебе не кажется, что твои вопросы должны быть здесь (без обид )

Попробуй так:
Данный код взят с: http://www.delphisources.ru
Код:
const
  csCryptFirst = 20;
  csCryptSecond = 230;
  csCryptHeader = 'Crypted';

type
  ECryptError = class(Exception);

function CryptString(Str:String):String;
var i,clen : Integer;
begin
  clen := Length(csCryptHeader);
  SetLength(Result, Length(Str)+clen);
  Move(csCryptHeader[1], Result[1], clen);
  For i := 1 to Length(Str) do
   begin
    if i mod 2 = 0 then
     Result[i+clen] := Chr(Ord(Str[i]) xor csCryptFirst)
    else
     Result[i+clen] := Chr(Ord(Str[i]) xor csCryptSecond);
   end;
end;

function UnCryptString(Str:String):String;
var i, clen : Integer;
begin
  clen := Length(csCryptHeader);
  SetLength(Result, Length(Str)-clen);
  if Copy(Str, 1, clen) < > csCryptHeader then
   raise ECryptError.Create('UnCryptString failed');

  For i := 1 to Length(Str)-clen do
   begin
    if (i) mod 2 = 0 then
     Result[i] := Chr(Ord(Str[i+clen]) xor csCryptFirst)
    else
     Result[i] := Chr(Ord(Str[i+clen]) xor csCryptSecond);
   end;
end;
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 11.10.2007, 19:14   #3
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

мне ненадо шифровать ! мнебы операции с текстом...
как я уже писал разбиение строчки на буквы и замена/вставка букв.... далее я сам придумаю....
---

Последний раз редактировалось Alex21; 11.10.2007 в 19:55.
GAGARIN-NEW вне форума Ответить с цитированием
Старый 11.10.2007, 19:55   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
мне ненадо шифровать ! мнебы операции с текстом...
как я уже писал разбиение строчки на буквы и замена/вставка букв.... далее я сам придумаю....
Если шифровать не надо, то теряется всякая логика этих замен.
Ну да ладно... Полагаю можно использовать 2 массива - 1 для исходного символа, 2-рой для символа замены.

Замена производится: a[i]:=b[i];
Восстановление производится обратно: b[i]:=a[i];

p.s.:если я вас правильно понял.
Alex21 вне форума Ответить с цитированием
Старый 12.10.2007, 08:22   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Гагарин, вот пример :

[I]unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const pasn='vonemutzed';pasa='rhzywmosh';
var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
var k,i:integer;
begin caption:='';
//********* FOR ******************
for i :=1 to length(Edit1.Text) do
begin
if IsCharAlpha(Edit1.Text[i]) then begin
k:=ord(Edit1.Text[i])-ord('a')+1;
caption:=caption+pasa[k]
end else begin
k:=ord(Edit1.Text)-ord('1')+1;
caption:=caption+pasn[k]
end;
end;
//******* END FOR ****************{}
end;

end.


Скажи а почему ты выбрал именно такой алгоритм?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2007, 10:02   #6
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

[quote=Stilet;39831]
k:=ord(Edit1.Text)-ord('1')+1;
[quote]

В этой строчке ошибка (( не идёт (( что не так ?
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 18.10.2007, 09:39   #7
vovan_evv
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 10
По умолчанию

функция ord применима к перечисляемым данным, т.е. в данном случае к символу. Применимо к символам он возвращает ASCII код символа.

k:=ord(Edit1.Text[index])-ord('1')+1;
vovan_evv вне форума Ответить с цитированием
Старый 18.10.2007, 09:48   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

k:=ord(Edit1.Text[i])-ord('1')+1;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм шифрования Диффи-Хеллмана! Kaifolom Помощь студентам 3 09.08.2013 06:37
[Алгоритм] Симметричного шифрования tuxx32 Помощь студентам 6 13.05.2010 09:39
Алгоритм шифрования Simply-Art Общие вопросы Delphi 14 01.02.2008 14:30
Алгоритм (RichEdit,inifiles,работа с текстом) GAGARIN-NEW Общие вопросы Delphi 8 29.01.2008 19:17