Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

WinCryptCred

Windows Credentials & Cryptography

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Windows Credentials & Cryptography

Daten ohne Passwort verschl�sseln, mit Keys des aktuellen Prozesses, Benuters oder der Windows-Installation.

Passw�rter und Schl�ssel im Anmeldeinformationsspeicher des Windows hinterlegen.

Screenshot


Passw�rter, Schl�ssel und �hnliches in der Anmeldeinformationsverwaltung des aktuellen Nutzers speichern.

pascal
Name := 'username';
Pass := 'password';
WinCrypt.WriteToCredentialsStore('TheTarget', Name, Pass);
pascal
if WinCrypt.ReadFromCredentialsStore('TheTarget', Credential) then
  ShowMessage(Credential.Name + ' : ' + Credential.Passw);
pascal
CredentialArr := WinCrypt.FindInCredentialsStore('TheTarget*');
for var Cred in CredentialArr do
  ShowMessage(Cred.Name + ' : ' + Cred.Passw);
pascal
// [WIN] Anmeldeinformationsverwaltung > Windows-Anmeldeinformation
// control.exe /name Microsoft.CredentialManager
WinCrypt.OpenCredentialManager;

Passwort-Dialog des Betriebssystems benutzen.

pascal
var Username, Password: string;
if WinCrypt.WindowsCredentialDialog(Username, Password {, nil, Self}) then
  ShowMessage(Username + ' / ' + Password);
pascal
var Username: string := 'name';
var Password: string := 'pass';
var Save: LongBool   := False;
if WinCrypt.WindowsCredentialDialog(Username, Password, @Save, Self, 'Caption', 'The Desription') then
  ShowMessage('Save=' + Save.ToString + ': ' + Username + ' / ' + Password);

Daten mit einem Kontext der aktuellen Prozess ver-/entschl�sseln. Nur innerhalb der aktuellen Prozess-Intsanz entschl�sselbar, oder w�hrend der aktuellen Login-Session, oder z.B. um ein Passwort w�hrend der Laufzeit zu sch�tzen, damit es nicht in der Auslagerungsdatei, bei einem ReadProcessMemory oder �ber ein Prozess-Abbild lesbar ist. (nur ganz kurz w�hrend der Verwendung)

pascal
var Data: TBytes = TEncoding.UTF8.GetBytes('1234567890123456');  // Length = Multiple of 16 bytes
WinCrypt.EncryptProcessMemory(Pointer(Data), Length(Data {, OnlyThisProcess});
pascal
WinCrypt.DecryptProcessMemory(Pointer(Data), Length(Data {, OnlyThisProcess});
ShowMessage(TEncoding.UTF8.GetString(Data));

Daten mit dem Schl�ssel des Benutzers ver-/entschl�sseln. Nur f�r Programme im Kontext des aktuell angemeldeten Windows-Benutzers.

pascal
var Data: TBytes = TEncoding.UTF8.GetBytes('abc123');
WinCrypt.EncryptUserData(Data);
pascal
WinCrypt.DecryptUserData(Data);
ShowMessage(TEncoding.UTF8.GetString(Data));

Daten mit dem Schl�ssel des Computers ver-/entschl�sseln. Nur f�r Programme, welche in dieser Windows-Installation laufen.

pascal
var Data: TBytes = TEncoding.UTF8.GetBytes('abc123');
WinCrypt.EncryptComputerData(Data);
pascal
WinCrypt.DecryptComputerData(Data);
ShowMessage(TEncoding.UTF8.GetString(Data));