Crypter et décrypter un password dans les préférences

Bonjour,

Je recherche un moyen simple de crypter et décrypter un password dans mon fichier préférence.

prefspass = CrypterPass(“toto”)
…stockage dans mes prefs

MonPass = DecrypterPass(prefpass)

ça Fait un bon moment que je tourne en rond sans trouver de solutions avec les classes Cryptos.

Merci.

pourquoi tu fais un hash de ton pass plutôt ? ou sinon y’a plein de solution avec einghur ou mbs ou même avec

gratos

Merci, je vais explorer einghur que j’avais téléchargé déjà…

il vaut mieux utiliser une solution native plutôt qu’un plugin si c’est possible …
effectivement on ne stocke jamais un mot de passe mais on stocke son hash c’est bien plus secure.
avec par exemple la commande sha512 de xojo.

Merci de vos réponses, j’ai fait le feignant et utilisé le plug-in Chilkat, très simple à appréhender…

Ça donne ça en final
Public Function CryptDecrypt(Mode as Integer, datas as String) As String
Dim crypt As New Chilkat.Crypt2

crypt.CryptAlgorithm = “pbes2”
crypt.PbesPassword = “paraphrase”

crypt.PbesAlgorithm = “rc2”
crypt.KeyLength = 128
crypt.Rc2EffectiveKeyLength = 128
crypt.SetEncodedIV “0000000000000000”,“hex”
crypt.SetEncodedSalt “0102030405060708”,“hex”
crypt.IterationCount = 1024
crypt.HashAlgorithm = “sha1”
crypt.EncodingMode = “hex”

Select case Mode

Case 0 //encrypt
Dim plainText As String
plainText = datas
Dim encryptedText As String
encryptedText = crypt.EncryptStringENC(plainText)
Return encryptedText

Case 1 //decrypt
Dim decryptedText As String
decryptedText = crypt.DecryptStringENC(datas)
Return decryptedText
end Select

End Function

Version définitive en pure Xojo, pour créer des clés allez par exemple sur Online tool to format private key. par exemple…

Public Function CryptDecrypt(Mode As integer, datas As MemoryBlock) As String
// 0 encrypt , 1 Decrypte

Var privateKey As String
Var publicKey As String
Var bmessage As  MemoryBlock
Var encryptedData As MemoryBlock
Var decryptedData As MemoryBlock

privateKey = "30820275020100300D06092A864886F70D01010105000482025F3082025B02010002818100BCB6CE38593CBE327AA4F278845222F9F57C64DCB09F2D974796DC1C9D4433D6B8212BFF210CD35483691114CB7D3DC22C7E1972B3B9989042DC8E0E7D37744A7239D35586A54C66FC29692244337848809F0FB1102813371DE15BDA6AD04FE3080AA8A173B213D957FE4539ACD0D558CAEFBAD8BC9EC3D67774B02EAA5A23F70201110281801BC087BCFE107652B7AED85D04666E8E2BA15A207453A4D27B78114F808A079F938C685A3990F1E6C807EBEC78471FAB9D219A54A1F5A57EA06BBA89A900A028CFA16F9358C93229775ADC8292DB2CC2FBC4DC047436A7D92A07F0D681CE8F4BAED4EEB184AEB76C5861DE5DF3969D701A082812F5A1AD281170F915152DC5D9024100C19AF7B8163B718381C1094F401697824E27457D480BAE8CEAA41F3D4591145D4CB9D0B0E265D03ABB01D3C5ADC07011A482B29A794EF4A672C71037F25067F9024100F9884B4D14AB52964ECB5127EA4A7D31E8D6BEE24B7588E57BD40A1DB28F6D1CB00F4D9FD7DB6457772FBC8EB9DD03800F025E23BD0468EC5AE09BCDC19F476F024100B6377FBC5128E34E983D35F03C517F89B2F7C8EE61ECE084A09A77C1326A6D84FCEB1EC498D84B8291E39A23765AC3D45E992091631D227E8A24C3F86B96F871024100A1764ED785D8447F602934833D3F41F31E3099A17C1EE01C04D47F04283EB00380FAD7DFE6066E1A7A4C10989661D516A04CD380895D34D52BBE82EE8C58010B02406E2EEB1A54D30295F1CE096413DCCE3A3AEAFBA904785B3E1BB59303ADD84F6AEEFEE017A5327DBCD994C3305D7CE9D57827D93929433E4EA8C8C23E00CA801D"
publicKey = "30819D300D06092A864886F70D010101050003818B0030818702818100BCB6CE38593CBE327AA4F278845222F9F57C64DCB09F2D974796DC1C9D4433D6B8212BFF210CD35483691114CB7D3DC22C7E1972B3B9989042DC8E0E7D37744A7239D35586A54C66FC29692244337848809F0FB1102813371DE15BDA6AD04FE3080AA8A173B213D957FE4539ACD0D558CAEFBAD8BC9EC3D67774B02EAA5A23F7020111"

Select Case Mode
  
Case 0 // Encrypt 
  bmessage = datas
  encryptedData  = Crypto.RSAEncrypt( bmessage, publicKey )
  Return EncodeBase64(encryptedData)
  
Case 1 // Now decrypt
  encryptedData = DecodeBase64(datas)
  If encryptedData <> Nil Then
    decryptedData = Crypto.RSADecrypt( encryptedData, privateKey )
  End If
  Return decryptedData
End Select


1 Like