Initial commit: MQL5 Scripts Collection (MetaTrader 5)
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| Sec-WebSocket-Key-Generator.mq5 |
|
||||
//| Copyright 2024, Rajesh Kumar Nait |
|
||||
//| https://www.mql5.com/en/users/rajeshnait/seller |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "Copyright 2024, Rajesh Kumar Nait"
|
||||
#property link "https://www.mql5.com/en/users/rajeshnait/seller"
|
||||
#property version "1.00"
|
||||
#property description "Generated Sec-WebSocket-Key as described in https://datatracker.ietf.org/doc/html/rfc6455#section-11.3.3"
|
||||
//+------------------------------------------------------------------+
|
||||
//| Script program start function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnStart() {
|
||||
//---
|
||||
MathSrand(GetTickCount());
|
||||
|
||||
// Call the function to generate and print the key
|
||||
string generatedKey = GenerateKey();
|
||||
Print("Generated Key: ", generatedKey);
|
||||
}
|
||||
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
string Base64EncodeChar(int value) {
|
||||
string base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
if (value >= 0 && value <= 63)
|
||||
return StringSubstr(base64Chars, value, 1);
|
||||
else
|
||||
return "=";
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
string GenerateKey() {
|
||||
uchar randomBytes[16];
|
||||
|
||||
// Generate 16 random bytes using MathRand
|
||||
for (int i = 0; i < ArraySize(randomBytes); i++) {
|
||||
randomBytes[i] = MathRand() % 256;
|
||||
}
|
||||
|
||||
// Base64 encode the random bytes
|
||||
string base64Key = "";
|
||||
for (int i = 0; i < ArraySize(randomBytes); i += 3) {
|
||||
int byte1 = randomBytes[i];
|
||||
int byte2 = i + 1 < ArraySize(randomBytes) ? randomBytes[i + 1] : 0;
|
||||
int byte3 = i + 2 < ArraySize(randomBytes) ? randomBytes[i + 2] : 0;
|
||||
|
||||
int combinedValue = (byte1 << 16) | (byte2 << 8) | byte3;
|
||||
|
||||
base64Key += Base64EncodeChar((combinedValue >> 18) & 0x3F);
|
||||
base64Key += Base64EncodeChar((combinedValue >> 12) & 0x3F);
|
||||
base64Key += i + 1 < ArraySize(randomBytes) ? Base64EncodeChar((combinedValue >> 6) & 0x3F) : "=";
|
||||
base64Key += i + 2 < ArraySize(randomBytes) ? Base64EncodeChar(combinedValue & 0x3F) : "=";
|
||||
}
|
||||
|
||||
return base64Key;
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
Reference in New Issue
Block a user