Bonjour à tous,
J'aimerais savoir si il existe une librairie, des fonctions pour crypter en sha1 sous XE5 ?
Malgré mes recherches je n'ai rien trouvé de très concluant ...
Cordialement,
Remss
Version imprimable
Bonjour à tous,
J'aimerais savoir si il existe une librairie, des fonctions pour crypter en sha1 sous XE5 ?
Malgré mes recherches je n'ai rien trouvé de très concluant ...
Cordialement,
Remss
Salut
un petit Google me donne ceci Crypto++
déjà essayé?
un lien sur cette bibliothèque http://www.dreamincode.net/forums/to...-c-builder-xe/
merci de ton feedback qui sera bien utile
cordialement
Salut, voici le code que j'utilise avec Crypto++.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String __fastcall DigestSHA1(String AText) { SHA1 sha; System::Byte abDigest[SHA1::DIGESTSIZE]; sha.CalculateDigest(abDigest, (System::Byte*)AText.c_str(), AText.Length() * AText.ElementSize()); std::string sink; HexEncoder encoder(NULL, true, 2, ""); encoder.Attach(new StringSink(sink)); encoder.Put(abDigest, sha.DigestSize()); encoder.MessageEnd(); return String(sink.c_str()); }
Merci pour vos réponses !
J'avais essayé d'utiliser ça au début : http://www.codeproject.com/Articles/...the-SHA-Hash-A
Maintenant, je vais essayer ce que vous m'avez passé, en attendant je suis allé ici : http://www.cryptopp.com/
Et apparemment crypto++ fonctionne que sous XE10 ...
Platforms
The current version of Crypto++ supports the following compilers:
MSVC 6.0 - 2012
GCC 3.3 - 4.7
Clang 3.2
Intel C++ Compiler 11 - 13
Solaris Studio 12.3
C++Builder 2010 (for version 5.6.1)
Mais je vais voir ce que je peux faire, merci beaucoup de votre aide ! :D
Cordialement,
Remss
Oui parce que la librairie n'est pas supportée, embarcadero m'insulte dès que je l'inclut :weird:
J'ai réussi à bidouillé quelque chose pour utiliser les fonctions mais j'ai une erreur d'externe non résolu lors de l'appel d'une énumération ? sûrement un fichier qui manque ...
Donc pour le moment je me retrouve coincé et contraint d'utiliser du ROT13 en attendant une solution :aie: juste pour dire que je ne laisse pas les mots de passes en clair.
Un collègue utilise du sha1 pour son site, c'est tellement plus simple en php !
Salut, voici comment faire à l'aide d'Indy (inclus dans RAD Studio).
Il faut d'abord ajouté ceci:
Voici le code:Code:
1
2 #include <IdHashSHA.hpp> #include <IdStrings.hpp>
Dans LBytes tu as la valeur en binaire et LHexStr est une chaine de caractères en hexadécimal.Code:
1
2
3
4
5
6
7
8 String LHexStr; TIdHashSHA1* LSha1 = new TIdHashSHA1(); Idglobal::TIdBytes LBytes = LSha1->HashString("Text", Idglobal::_di_IIdTextEncoding()); for(int i = 0; i < LBytes.Length; ++i) { LHexStr += BinToHexStr(LBytes[i]); } delete LSha1;
À la place de Idglobal::_di_IIdTextEncoding() qui est la valeur par défaut, tu peux utiliser ceci:
- IndyTextEncoding_Default();
- IndyTextEncoding_OSDefault();
- IndyTextEncoding_8Bit();
- IndyTextEncoding_ASCII();
- IndyTextEncoding_UTF16BE();
- IndyTextEncoding_UTF16LE();
- IndyTextEncoding_UTF7();
- IndyTextEncoding_UTF8();
Merci beaucoup ça fonctionne impeccable !
Juste lors de la conversion, les lettres minuscules se transforment en majuscules, du coup j'ai fais un petit bout de code pour les remettre en minuscules :
Cordialement,Code:
1
2
3
4
5
6
7
8
9
10
11
12 for(i=0; cPassWord[i] != '\0'; i++ ) { if (cPassWord[i] >= 'A' && cPassWord[i] <= 'M'){ cPassWord[i] += 32; } else if(cPassWord[i] > 'M' && cPassWord[i] <= 'Z'){ cPassWord[i] -= 32; } sMDP_SHA1=cPassWord; }
Remss
Est-ce que tu parles de la chaine de caractère hexadécimale dans la variable LHexStr?
Si c'est le cas alors il suffit d'utiliser la méthode LowerCase:
Code:LHexStr = LHexStr.LowerCase(); // Met le texte en minuscule