Hallo DarkDragon,
Hallo @All
Das mittels AES als Datei Speicher wäre natürlich die Lösung.
https://www.purebasic.com/german/docume ... coder.html
Wenn ich mir die Vorlage bei PB Anschaue, brauche ich einen Key. (Schlüssel wie im Beispiel zu #PB_Cipher_ECB
https://www.purebasic.com/german/docume ... erkey.html
Alles darum ist OK, ich frage mich nun, wenn ich zu Faul bin, könnte ich den Schlüssel anhand der GUID Generieren.
Code: Alles auswählen
EnableExplicit
Procedure.s MakeGUID()
Protected guid.GUID, lpsz.s{76}
If CoCreateGuid_(@guid) = #S_OK
ProcedureReturn PeekS(@lpsz, StringFromGUID2_(guid, @lpsz, 76), #PB_Unicode)
EndIf
EndProcedure
MessageRequester("","GUID: "+MakeGUID(),0)
GUID als HEX ausgeben habe ich auch gesehen, aber da der Key im Beispiel eine gewisse Formatierung voraussetzt,
kann ich nun den erstellten GUID HEX Wert nicht einfach so übernehmen.
Code: Alles auswählen
Structure HW_PROFILE_INFO
DockInfo.l
szHWProfileGUID.s{38}
EndStructure
GetCurrentHwProfile_(hwp.HW_PROFILE_INFO)
hwGUID.s = hwp\szHWProfileGUID
String$ = hwGUID
; Kodieren eines UTF-8 Strings
*Text = UTF8(String$)
Encoded$ = Base64Encoder(*Text, StringByteLength(String$, #PB_UTF8))
UseSHA3Fingerprint()
*Key = AllocateMemory(32)
; Erstellt einen 256-Bit-Schlüssel mithilfe der SHA-512-Hash-Funktion und 500.000 Iterationen
DeriveCipherKey(hwGUID, Encoded$, 500000, *Key, 256, #PB_Cipher_SHA3, 512)
; Zeigt den Schlüssel an
ShowMemoryViewer(*Key, 32)
Somit hätte ich nun aus der GUID einen HEX Schlüssel generiert.
Schaut jedoch komplett different aus zwischen
18 B6 E7 89 97 DE 0D FE 84 89 15 4B 57 A2 51 B2
und dem was im Source Beispiel aus AES-Encoder Steht:
$06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06
Code: Alles auswählen
DataSection
Key:
Data.a $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06
EndDataSection
Ich muss für die Vorlage diesen ja Formatieren. Kann ich das auch Automatisiert bewerkstelligen ?
Und ich habe bereits die Suche angeschmissen, aber HEX, Formatieren, GUID da spukt das Board
wilde Sachen aus und durch das ganze von A bis Z durchlesen wird etwas viel,
deswegen meine abgekürzte Form und Fragen.
Ja, ich habe natürlich geschaut wo ich den einen oder anderen Code verwenden und zusammen zu bringen.
Und mir ist auch bewusst dass meine Source jetzt auch nicht gerade den Schönheitswettbewerb gewinnt.
Langsam merke ich dass meine Konzentration nachlässt, und ich hoffe dass noch alles Verständlich ist.
Liebe Grüsse
Christian
PS: Hier also meine Vorläufige gebundene Arbeit, welche so noch nicht Funktioniert.
Code: Alles auswählen
Structure HW_PROFILE_INFO
DockInfo.l
szHWProfileGUID.s{38}
EndStructure
GetCurrentHwProfile_(hwp.HW_PROFILE_INFO)
hwGUID.s = hwp\szHWProfileGUID
String$ = hwGUID
; Kodieren eines UTF-8 Strings
*Text = UTF8(String$)
Encoded$ = Base64Encoder(*Text, StringByteLength(String$, #PB_UTF8))
UseSHA3Fingerprint()
*Key = AllocateMemory(32)
; Erstellt einen 256-Bit-Schlüssel mithilfe der SHA-512-Hash-Funktion und 500.000 Iterationen
DeriveCipherKey(hwGUID, Encoded$, 500000, *Key, 256, #PB_Cipher_SHA3, 512)
String$ = "Hello this is a test for AES"
*CipheredString = AllocateMemory(StringByteLength(String$) + SizeOf(Character)) ; Platz für den null-terminierten String
*DecipheredString = AllocateMemory(StringByteLength(String$) + SizeOf(Character)) ; mit seiner abschließenden Null
If AESEncoder(@String$, *CipheredString, MemorySize(*CipheredString), ?Key, 128, 0, #PB_Cipher_ECB)
Debug "Ciphered: " + PeekS(*CipheredString)
AESDecoder(*CipheredString, *DecipheredString, MemorySize(*DecipheredString), ?Key, 128, 0, #PB_Cipher_ECB)
Debug "Deciphered: " + PeekS(*DecipheredString)
EndIf
DataSection
Key:
Data.a *Key
; Data.a 18 B6 E7 89 97 DE 0D FE 84 89 15 4B 57 A2 51 B2
; Data.a $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06
EndDataSection