Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Вниз

Шифрование текста в ini-файле   Найти похожие ветки 

 
FBI Agent ©   (2006-12-24 12:41) [0]

У меня пароли записываются в ini файл, но проблема в том, что они никак не шифруются при этом. Подскажите каким алгоритмом их можно зашифровать, и в последствии нужно ли их дешифровывать для того, чтобы программа могла с ними работать?
P.s. Я в этой области новичёк, по-этому, если вам не трудно - объясните как можно доступнее...


 
Virgo_Style ©   (2006-12-24 12:51) [1]

Если писать хэш, а не пароль - то расшифровывать не надо, но и пароль не восстановить, если забудешь. А если шифровать, то алгоритмы - начиная с xor"а, для новичка что-то более сложное лучше и не трогать, imho)


 
FBI Agent ©   (2006-12-24 15:03) [2]

Можно увидеть хоть какой-нибудь пример использования хэш или xor, чтобы понять смысл работы.


 
allrussia ©   (2006-12-24 15:12) [3]

FBI Agent


const
 csCryptFirst = 20;
 csCryptSecond = 230;
 csCryptHeader = "";

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
caption:=(CryptString("FBI Agent"));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
caption:=(UnCryptString(caption));
end;


 
Anatoly Podgoretsky ©   (2006-12-24 15:24) [4]

> FBI Agent  (24.12.2006 15:03:02)  [2]

Можно, например это
N := 0
...
N := N + Ord(S[I]);

N это хеш (подпись, signature)ни на что, ты сам выбрал свой путь.


 
Плохиш ©   (2006-12-24 15:50) [5]


> в последствии нужно ли их дешифровывать для того, чтобы
> программа могла с ними работать?

Да


 
FBI Agent ©   (2006-12-24 15:57) [6]

allrussia © У меня вопрос, а почему при повторном нажатии на Button2 заголовок опять шифруется?


 
MetalFan ©   (2006-12-24 15:59) [7]

потому что это xor)


 
allrussia ©   (2006-12-24 16:12) [8]

FBI Agent

не в курсе - взял просто готовый пример который сам использую


 
АИШ   (2006-12-24 16:26) [9]

Вот запись пароля в файл с шифрованием:
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"Settings.ini");
Ini.WriteString("Pass","first(1)",(CryptString(Edit1.Text)));


А вот проверка его на правильность с предварительной дешифровкой:
if (Edit1.Text = UnCryptString(Ini.ReadString("Pass","first(1)","1111"))) then begin

Вроде бы всё сделал правильно, но ничего не работает, пароль шифруется нормально но вот когда пытаюсь его ввести он пишет что пароль не верный :(


 
allrussia ©   (2006-12-24 16:39) [10]

АИШ

procedure TForm1.Button1Click(Sender: TObject);
var ini: TIniFile;
begin

ini:=TIniFile.Create(Application.ExeName + ".ini");
ini.WriteString("pass", "1", CryptString(Edit1.Text));
end;

procedure TForm1.Button2Click(Sender: TObject);
var ini: TIniFile;
begin
ini:=TIniFile.Create(Application.ExeName + ".ini");
if UnCryptString (ini.ReadString ("pass", "1", CryptString(Edit1.Text))) = Edit1.Text then
ShowMessage("OK");

end;


а у меня работает


 
FBI Agent ©   (2006-12-24 18:56) [11]

Я всё сделал, теперь и у меня работает более-менее нормально, но вот по ходу дела, появился ещё один вопросик: "А с русским текстом этот алгоритм не работает?" Потому как у меня в программе есть 2 функции: Просмотреть пароль и скрывать его за звёздочками, так вот после того, как я ввожу его туда русскими буквами он его даже дешифровать не может, и соответственно говорит что пароль не верен. А вот с латинскими буквами всё ок.


 
wl ©   (2006-12-24 20:56) [12]

ламеризм...


 
wl ©   (2006-12-24 20:58) [13]

ой, извините, я думал, что в "Прочем" сижу, удалите мои посты


 
allrussia ©   (2006-12-28 00:32) [14]

FBI Agent

самый простой вариант:
пусть при вводе пароля автоматом раскладка переключается на латиницу, а пароль отображается звездочками. Идея ясна?


 
TStas ©   (2006-12-28 01:51) [15]

Эта функция принимает строчку, которую надо шифровать и строчку - ключ.
Возвращает шифрованную. Повторное применение расшифровывает строку. Как раз для инишек сгодится.
function XorStr(const Str, KeyStr: String): String;
var
 Ln1, Ln, i, n: Integer;
 b: Byte;
begin
If Str = "" then
 begin
 Result := "";
 exit;
 end;
If KeyStr = "" then
 begin
 Result := Str;
 Exit;
 end;

Ln := Length(Str);
Ln1 := Length(KeyStr);
SetLength(Result, Ln);
for i := 1 to Ln do
 begin
 n := i mod Ln1;
 If n = 0 then n := Ln1;
 b := Byte(Str[i]) xor Byte(KeyStr[n]);
 Result[i] := Char(b);
 end;
end;


 
ORMADA ©   (2006-12-28 07:14) [16]

http://www.degisy.com/download.php
DataFile (class TDataFile)
   (Delphi 5,6,7, C++Builder 6 with sources)  4 Kb

готовый шифрованный ini класс


 
FBI Agent ©   (2006-12-29 01:21) [17]

ORMADA © Не подходит, т.к. у меня размер файла меньше 64 кб
TStas © А пример можно?


 
hero ©   (2006-12-29 09:09) [18]

FBI Agent "Я всё сделал, теперь и у меня работает более-менее нормально, но вот по ходу дела, появился ещё один вопросик: "А с русским текстом этот алгоритм не работает?" Потому как у меня в программе есть 2 функции: Просмотреть пароль и скрывать его за звёздочками, так вот после того, как я ввожу его туда русскими буквами он его даже дешифровать не может, и соответственно говорит что пароль не верен. А вот с латинскими буквами всё ок."
предположение:
перед шифрованием ChartoOEM
проверка : OEMtoChar



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.041 c
3-1162302080
MAX727
2006-10-31 16:41
2007.01.21
Как создать .mdb - файл


3-1162350693
boalse
2006-11-01 06:11
2007.01.21
С чего начать?


4-1156847479
danatelo
2006-08-29 14:31
2007.01.21
СНИФЕР ПЕЧАТИ НУЖНА ПОМОЩЬ


15-1166707484
Ega23
2006-12-21 16:24
2007.01.21
О пользе Архангельского :)))


3-1162552706
salexn
2006-11-03 14:18
2007.01.21
Ошибки фильтрации TClientDataSet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский