Jump to content
Sign in to follow this  
pinkfoyd

Encrypt / Decrypt Data in a ini file

Recommended Posts

pinkfoyd

Hi all,

I successfully encode and decode a string, but i don't succeed with a ini file.

What i want :

Read a data in INI file, encode it, then replace it in the ini_file

After that, i want to read the ini file and decrypt the data

But this does'nt work, i think it's a problem of format (Binary/String ) but i don't succeed

$password     = "123456"

$adresse_ftp          = IniRead($path_directive,"FTP","url","[NOT_FOUND]")
$adresse_ftp_crypted  =_Crypt_EncryptData($adresse_ftp  ,$password,$CALG_AES_256)

IniWrite($fichier_ini ,"FTP","url",$adresse_ftp_crypted)


$adresse_ftp    = IniRead($path_directive,"FTP","url","[NOT_FOUND]")

_FileWriteLog($log_file,$adresse_ftp)

if StringLeft($adresse_ftp,2) = "0x" then $adresse_ftp = BinaryToString(_Crypt_DecryptData($adresse_ftp , $password, $CALG_AES_256))

_FileWriteLog($log_file,$adresse_ftp)

This give me this result ( before decrypt / after decrypt ):

2011-03-28 15:04:46 : 0x0AE9B9CBDEE341E4313D442CC8CBF58A
2011-03-28 15:04:46 : ÿÿÿÿ

Again if i do the same code, but without passthrought an ini file, all works...

Any help would be apprecied...

Edited by pinkfoyd

Share this post


Link to post
Share on other sites
pinkfoyd

hum, lol

while i am trying to write you a better example, it's work ! trying to check what i m wrong in my first code

EDIT : SHAME ON ME : somewhere in my script i delete the variable wich contain the encryption key, so stupid... :)

Edited by pinkfoyd

Share this post


Link to post
Share on other sites
wolf9228

Hi all,

I successfully encode and decode a string, but i don't succeed with a ini file.

What i want :

Read a data in INI file, encode it, then replace it in the ini_file

After that, i want to read the ini file and decrypt the data

But this does'nt work, i think it's a problem of format (Binary/String ) but i don't succeed

$password     = "123456"

$adresse_ftp          = IniRead($path_directive,"FTP","url","[NOT_FOUND]")
$adresse_ftp_crypted  =_Crypt_EncryptData($adresse_ftp  ,$password,$CALG_AES_256)

IniWrite($fichier_ini ,"FTP","url",$adresse_ftp_crypted)


$adresse_ftp    = IniRead($path_directive,"FTP","url","[NOT_FOUND]")

_FileWriteLog($log_file,$adresse_ftp)

if StringLeft($adresse_ftp,2) = "0x" then $adresse_ftp = BinaryToString(_Crypt_DecryptData($adresse_ftp , $password, $CALG_AES_256))

_FileWriteLog($log_file,$adresse_ftp)

This give me this result ( before decrypt / after decrypt ):

2011-03-28 15:04:46 : 0x0AE9B9CBDEE341E4313D442CC8CBF58A
2011-03-28 15:04:46 : ÿÿÿÿ

Again if i do the same code, but without passthrought an ini file, all works...

Any help would be apprecied...

Try this code

#include <Crypt.au3>

Ini_Write("Password","Filename.ini","Section","Key","Value")

$Value = Ini_Read("Password","Filename.ini","Section","Key")
if Not @error Then _
MsgBox(0,"MSG",$Value)

Func Ini_Write($Password,$Filename,$Section,$Key,$Value)
_Crypt_Startup()
if @error Then Return SetError(1,@error,False)
$hKey =_Crypt_DeriveKey($Password,$CALG_RC4)
if @error Then Return SetError(2,@error,False)
$ByteStruct =  DllStructCreate("BYTE[" & StringLen($Value) & "]")
DllStructSetData($ByteStruct,1,$Value)
$StrByte = String(DllStructGetData($ByteStruct,1))
$EncryptedValue = _Crypt_EncryptData($StrByte,$hKey,$CALG_USERKEY)
if @error Then Return SetError(3,@error,False)
IniWrite($Filename,$Section,$Key,$EncryptedValue)
if @error Then Return SetError(4,@error,False)
_Crypt_DestroyKey($hKey)
_Crypt_Shutdown()
Return SetError(0,0,True)
EndFunc


Func Ini_Read($Password,$Filename,$Section,$Key,$Default = "NotFound")
$EncryptedValue = IniRead($Filename,$Section,$Key,$Default)
if $EncryptedValue == $Default Then Return SetError(1,0,$Default)
_Crypt_Startup()
if @error Then Return SetError(2,@error,$Default)
$hKey =_Crypt_DeriveKey($Password,$CALG_RC4)
if @error Then Return SetError(3,@error,$Default)
$Binary = _Crypt_DecryptData($EncryptedValue,$hKey,$CALG_USERKEY)
if @error Then Return SetError(4,@error,$Default)
$StrByte = BinaryToString($Binary)
if @error Then Return SetError(5,@error,$Default)
$ByteStruct =  DllStructCreate("BYTE[" & BinaryLen($StrByte) & "]")
DllStructSetData($ByteStruct,1,$StrByte)
$CharStruct = _
DllStructCreate("CHAR[" & DllStructGetSize($ByteStruct) & "]",DllStructGetPtr($ByteStruct))
_Crypt_DestroyKey($hKey)
_Crypt_Shutdown()
Return SetError(0,0,DllStructGetData($CharStruct,1))
EndFunc
Edited by wolf9228
  • Like 1

صرح السماء كان هنا

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×