LEFT | RIGHT |
(no file at all) | |
1 #include "PluginStdAfx.h" | |
2 | |
3 #include "PluginChecksum.h" | |
4 #include "PluginClient.h" | |
5 | |
6 | |
7 CPluginChecksum::CPluginChecksum() | |
8 { | |
9 Clear(); | |
10 } | |
11 | |
12 | |
13 CPluginChecksum::~CPluginChecksum() | |
14 { | |
15 } | |
16 | |
17 | |
18 void CPluginChecksum::Clear() | |
19 { | |
20 m_sum = 0; | |
21 m_r = 55665; | |
22 m_c1 = 52845; | |
23 m_c2 = 22719; | |
24 } | |
25 | |
26 | |
27 DWORD CPluginChecksum::Get() const | |
28 { | |
29 return m_sum; | |
30 } | |
31 | |
32 | |
33 CString CPluginChecksum::GetAsString() const | |
34 { | |
35 CString checksum; | |
36 | |
37 checksum.Format(L"%lu", Get()); | |
38 | |
39 return checksum; | |
40 } | |
41 | |
42 | |
43 void CPluginChecksum::Add(BYTE value) | |
44 { | |
45 if (value) | |
46 { | |
47 BYTE cipher = (value ^ (m_r >> 8)); | |
48 m_r = (cipher + m_r) * m_c1 + m_c2; | |
49 m_sum += cipher; | |
50 } | |
51 } | |
52 | |
53 | |
54 void CPluginChecksum::Add(const CStringA& s) | |
55 { | |
56 for (int i = 0; i < s.GetLength(); i++) | |
57 { | |
58 Add((BYTE)s.GetAt(i)); | |
59 } | |
60 | |
61 #ifdef ENABLE_DEBUG_CHECKSUM | |
62 CStringA sum; | |
63 sum.Format("%d", m_sum); | |
64 | |
65 DEBUG_CHECKSUM("Checksum::AddString " + s + " sum:" + sum) | |
66 #endif | |
67 } | |
68 | |
69 void CPluginChecksum::Add(const CStringW& s) | |
70 { | |
71 for (int i = 0; i < s.GetLength(); i++) | |
72 { | |
73 WORD value = (WORD)s.GetAt(i); | |
74 | |
75 Add(LOBYTE(value)); | |
76 Add(HIBYTE(value)); | |
77 } | |
78 | |
79 #ifdef ENABLE_DEBUG_CHECKSUM | |
80 CStringA sum; | |
81 sum.Format("%d", m_sum); | |
82 | |
83 DEBUG_CHECKSUM("Checksum::AddString " + s + " sum:" + sum) | |
84 #endif | |
85 } | |
86 | |
87 void CPluginChecksum::Add(const CStringA& s1, const CStringA& s2) | |
88 { | |
89 if (!s1.IsEmpty() && !s2.IsEmpty()) | |
90 { | |
91 Add(s1); | |
92 Add(s2); | |
93 } | |
94 } | |
95 | |
96 void CPluginChecksum::Add(const CStringW& s1, const CStringW& s2) | |
97 { | |
98 if (!s1.IsEmpty() && !s2.IsEmpty()) | |
99 { | |
100 Add(s1); | |
101 Add(s2); | |
102 } | |
103 } | |
LEFT | RIGHT |