AES Verschlüsselung für Strings
Verfasst: 27.08.2010 15:53
Da ich heute eine einfache Möglichkeit gesucht habe Strings mit AES zu verschlüsseln und entschlüsseln habe ich mir mal schnell zwei Funktionen dazu geschrieben die es so einfach wie möglich machen.
Code: Alles auswählen
EnableExplicit
Procedure.s StringEncoder( String$, Key$ )
Protected Size.l, *Input, *IV, *Ciphered, *Base64, Ciphered$
If String$
Size = StringByteLength( String$ ) + SizeOf(Character)
If Size < 16 : Size = 16 : EndIf
*Input = AllocateMemory( Size )
If *Input
PokeS( *Input, String$ )
Key$ = MD5Fingerprint( @Key$, StringByteLength( Key$ ) )
*IV = AllocateMemory( 16 )
CryptRandomData( *IV, 16 )
*Ciphered = AllocateMemory( Size + 16 )
If *Ciphered
CopyMemory( *IV, *Ciphered, 16 )
AESEncoder( *Input, *Ciphered + 16, Size, @Key$, 256, *IV, #PB_Cipher_CBC )
*Base64 = AllocateMemory( Size * 1.35 + 64 )
If *Base64
Size = Base64Encoder( *Ciphered, Size + 16, *Base64, Size * 1.35 + 64 )
Ciphered$ = PeekS( *Base64, Size, #PB_Ascii)
FreeMemory( *Base64 )
EndIf
FreeMemory( *Ciphered )
EndIf
FreeMemory( *IV )
FreeMemory( *Input )
EndIf
EndIf
ProcedureReturn Ciphered$
EndProcedure
Procedure.s StringDecoder( String$, Key$ )
Protected Size.l, *IV.l, *Deciphered, *Base64, Deciphered$, *Buffer
If String$
Size = StringByteLength(String$, #PB_Ascii) + SizeOf(Character)
*Base64 = AllocateMemory( Size + 64 )
If *Base64
*Buffer = AllocateMemory(Size)
PokeS(*Buffer, String$, StringByteLength(String$, #PB_Ascii), #PB_Ascii)
Size = Base64Decoder( *Buffer, StringByteLength(String$, #PB_Ascii), *Base64, Size + 64 )
Key$ = MD5Fingerprint( @Key$, StringByteLength( Key$ ) )
*IV = AllocateMemory( 16 )
CopyMemory( *Base64, *IV, 16 )
*Deciphered = AllocateMemory( Size - 16 )
If *Deciphered
AESDecoder( *Base64 + 16, *Deciphered, Size - 16, @Key$, 256, *IV, #PB_Cipher_CBC )
Deciphered$ = PeekS( *Deciphered )
FreeMemory( *Deciphered )
EndIf
FreeMemory( *IV )
FreeMemory( *Base64 )
FreeMemory( *Buffer )
EndIf
EndIf
ProcedureReturn Deciphered$
EndProcedure
OpenCryptRandom()
Define String$ = "Hallo Welt + Hallo Welt + Hallo Welt"
Debug String$
String$ = StringEncoder( String$, "Test" )
Debug String$
String$ = StringDecoder( String$, "Test" )
Debug String$