Skip to content

Commit abca353

Browse files
committed
Added benchmarks
1 parent 42e1d48 commit abca353

File tree

5 files changed

+201
-0
lines changed

5 files changed

+201
-0
lines changed

XTS.NET.Benchmarks/Program.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
using XTS.NET.Benchmark;
2+
using BenchmarkDotNet.Running;
3+
4+
BenchmarkRunner.Run<XtsNetBenchmark>();
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
using BenchmarkDotNet.Attributes;
2+
using System.Security.Cryptography;
3+
4+
namespace XTS.NET.Benchmark;
5+
6+
public class XtsNetBenchmark
7+
{
8+
byte[] key = [
9+
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
10+
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
11+
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
12+
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf
13+
];
14+
15+
ulong sector = 0xa987654321;
16+
17+
byte[] expectedPlaintext = [
18+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
19+
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
20+
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
21+
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
22+
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
23+
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
24+
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
25+
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
26+
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
27+
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
28+
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
29+
0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
30+
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
31+
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
32+
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
33+
0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
34+
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
35+
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
36+
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
37+
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
38+
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
39+
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
40+
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
41+
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
42+
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
43+
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
44+
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
45+
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
46+
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
47+
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
48+
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
49+
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
50+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
51+
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
52+
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
53+
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
54+
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
55+
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
56+
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
57+
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
58+
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
59+
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
60+
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
61+
0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
62+
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
63+
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
64+
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
65+
0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
66+
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
67+
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
68+
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
69+
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
70+
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
71+
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
72+
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
73+
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
74+
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
75+
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
76+
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
77+
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
78+
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
79+
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
80+
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
81+
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
82+
];
83+
84+
byte[] expectedCiphertext = [
85+
0x38, 0xb4, 0x58, 0x12, 0xef, 0x43, 0xa0, 0x5b,
86+
0xd9, 0x57, 0xe5, 0x45, 0x90, 0x7e, 0x22, 0x3b,
87+
0x95, 0x4a, 0xb4, 0xaa, 0xf0, 0x88, 0x30, 0x3a,
88+
0xd9, 0x10, 0xea, 0xdf, 0x14, 0xb4, 0x2b, 0xe6,
89+
0x8b, 0x24, 0x61, 0x14, 0x9d, 0x8c, 0x8b, 0xa8,
90+
0x5f, 0x99, 0x2b, 0xe9, 0x70, 0xbc, 0x62, 0x1f,
91+
0x1b, 0x06, 0x57, 0x3f, 0x63, 0xe8, 0x67, 0xbf,
92+
0x58, 0x75, 0xac, 0xaf, 0xa0, 0x4e, 0x42, 0xcc,
93+
0xbd, 0x7b, 0xd3, 0xc2, 0xa0, 0xfb, 0x1f, 0xff,
94+
0x79, 0x1e, 0xc5, 0xec, 0x36, 0xc6, 0x6a, 0xe4,
95+
0xac, 0x1e, 0x80, 0x6d, 0x81, 0xfb, 0xf7, 0x09,
96+
0xdb, 0xe2, 0x9e, 0x47, 0x1f, 0xad, 0x38, 0x54,
97+
0x9c, 0x8e, 0x66, 0xf5, 0x34, 0x5d, 0x7c, 0x1e,
98+
0xb9, 0x4f, 0x40, 0x5d, 0x1e, 0xc7, 0x85, 0xcc,
99+
0x6f, 0x6a, 0x68, 0xf6, 0x25, 0x4d, 0xd8, 0x33,
100+
0x9f, 0x9d, 0x84, 0x05, 0x7e, 0x01, 0xa1, 0x77,
101+
0x41, 0x99, 0x04, 0x82, 0x99, 0x95, 0x16, 0xb5,
102+
0x61, 0x1a, 0x38, 0xf4, 0x1b, 0xb6, 0x47, 0x8e,
103+
0x6f, 0x17, 0x3f, 0x32, 0x08, 0x05, 0xdd, 0x71,
104+
0xb1, 0x93, 0x2f, 0xc3, 0x33, 0xcb, 0x9e, 0xe3,
105+
0x99, 0x36, 0xbe, 0xea, 0x9a, 0xd9, 0x6f, 0xa1,
106+
0x0f, 0xb4, 0x11, 0x2b, 0x90, 0x17, 0x34, 0xdd,
107+
0xad, 0x40, 0xbc, 0x18, 0x78, 0x99, 0x5f, 0x8e,
108+
0x11, 0xae, 0xe7, 0xd1, 0x41, 0xa2, 0xf5, 0xd4,
109+
0x8b, 0x7a, 0x4e, 0x1e, 0x7f, 0x0b, 0x2c, 0x04,
110+
0x83, 0x0e, 0x69, 0xa4, 0xfd, 0x13, 0x78, 0x41,
111+
0x1c, 0x2f, 0x28, 0x7e, 0xdf, 0x48, 0xc6, 0xc4,
112+
0xe5, 0xc2, 0x47, 0xa1, 0x96, 0x80, 0xf7, 0xfe,
113+
0x41, 0xce, 0xfb, 0xd4, 0x9b, 0x58, 0x21, 0x06,
114+
0xe3, 0x61, 0x6c, 0xbb, 0xe4, 0xdf, 0xb2, 0x34,
115+
0x4b, 0x2a, 0xe9, 0x51, 0x93, 0x91, 0xf3, 0xe0,
116+
0xfb, 0x49, 0x22, 0x25, 0x4b, 0x1d, 0x6d, 0x2d,
117+
0x19, 0xc6, 0xd4, 0xd5, 0x37, 0xb3, 0xa2, 0x6f,
118+
0x3b, 0xcc, 0x51, 0x58, 0x8b, 0x32, 0xf3, 0xec,
119+
0xa0, 0x82, 0x9b, 0x6a, 0x5a, 0xc7, 0x25, 0x78,
120+
0xfb, 0x81, 0x4f, 0xb4, 0x3c, 0xf8, 0x0d, 0x64,
121+
0xa2, 0x33, 0xe3, 0xf9, 0x97, 0xa3, 0xf0, 0x26,
122+
0x83, 0x34, 0x2f, 0x2b, 0x33, 0xd2, 0x5b, 0x49,
123+
0x25, 0x36, 0xb9, 0x3b, 0xec, 0xb2, 0xf5, 0xe1,
124+
0xa8, 0xb8, 0x2f, 0x5b, 0x88, 0x33, 0x42, 0x72,
125+
0x9e, 0x8a, 0xe0, 0x9d, 0x16, 0x93, 0x88, 0x41,
126+
0xa2, 0x1a, 0x97, 0xfb, 0x54, 0x3e, 0xea, 0x3b,
127+
0xbf, 0xf5, 0x9f, 0x13, 0xc1, 0xa1, 0x84, 0x49,
128+
0xe3, 0x98, 0x70, 0x1c, 0x1a, 0xd5, 0x16, 0x48,
129+
0x34, 0x6c, 0xbc, 0x04, 0xc2, 0x7b, 0xb2, 0xda,
130+
0x3b, 0x93, 0xa1, 0x37, 0x2c, 0xca, 0xe5, 0x48,
131+
0xfb, 0x53, 0xbe, 0xe4, 0x76, 0xf9, 0xe9, 0xc9,
132+
0x17, 0x73, 0xb1, 0xbb, 0x19, 0x82, 0x83, 0x94,
133+
0xd5, 0x5d, 0x3e, 0x1a, 0x20, 0xed, 0x69, 0x11,
134+
0x3a, 0x86, 0x0b, 0x68, 0x29, 0xff, 0xa8, 0x47,
135+
0x22, 0x46, 0x04, 0x43, 0x50, 0x70, 0x22, 0x1b,
136+
0x25, 0x7e, 0x8d, 0xff, 0x78, 0x36, 0x15, 0xd2,
137+
0xca, 0xe4, 0x80, 0x3a, 0x93, 0xaa, 0x43, 0x34,
138+
0xab, 0x48, 0x2a, 0x0a, 0xfa, 0xc9, 0xc0, 0xae,
139+
0xda, 0x70, 0xb4, 0x5a, 0x48, 0x1d, 0xf5, 0xde,
140+
0xc5, 0xdf, 0x8c, 0xc0, 0xf4, 0x23, 0xc7, 0x7a,
141+
0x5f, 0xd4, 0x6c, 0xd3, 0x12, 0x02, 0x1d, 0x4b,
142+
0x43, 0x88, 0x62, 0x41, 0x9a, 0x79, 0x1b, 0xe0,
143+
0x3b, 0xb4, 0xd9, 0x7c, 0x0e, 0x59, 0x57, 0x85,
144+
0x42, 0x53, 0x1b, 0xa4, 0x66, 0xa8, 0x3b, 0xaf,
145+
0x92, 0xce, 0xfc, 0x15, 0x1b, 0x5c, 0xc1, 0x61,
146+
0x1a, 0x16, 0x78, 0x93, 0x81, 0x9b, 0x63, 0xfb,
147+
0x8a, 0x6b, 0x18, 0xe8, 0x6d, 0xe6, 0x02, 0x90,
148+
0xfa, 0x72, 0xb7, 0x97, 0xb0, 0xce, 0x59, 0xf3
149+
];
150+
151+
[Benchmark]
152+
public void Encrypt()
153+
{
154+
SymmetricAlgorithm aes = Aes.Create();
155+
156+
byte[] ciphertext = (byte[])expectedPlaintext.Clone();
157+
158+
aes.EncryptXtsSector(ciphertext, key, sector);
159+
}
160+
161+
[Benchmark]
162+
public void Decrypt()
163+
{
164+
SymmetricAlgorithm aes = Aes.Create();
165+
166+
byte[] plaintext = (byte[])expectedCiphertext.Clone();
167+
168+
aes.DecryptXtsSector(plaintext, key, sector);
169+
}
170+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<ProjectReference Include="..\XTS.NET.csproj" />
16+
</ItemGroup>
17+
18+
</Project>

XTS.NET.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@
99
<ItemGroup>
1010
<Compile Remove="tests\**" />
1111
<Compile Remove="test_case_gen\**" />
12+
<Compile Remove="XTS.NET.Benchmarks\**" />
1213
<EmbeddedResource Remove="tests\**" />
1314
<EmbeddedResource Remove="test_case_gen\**" />
15+
<EmbeddedResource Remove="XTS.NET.Benchmarks\**" />
16+
<None Remove="XTS.NET.Benchmarks\**" />
1417
<None Remove="tests\**" />
1518
<None Remove="test_case_gen\**" />
1619
</ItemGroup>

XTS.NET.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XTS.NET", "XTS.NET.csproj",
77
EndProject
88
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XTS.NET.Tests", "tests\XTS.NET.Tests.csproj", "{AE300E49-FCCD-45D6-A32C-6E133148DF02}"
99
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XTS.NET.Benchmarks", "XTS.NET.Benchmarks\XTS.NET.Benchmarks.csproj", "{652E2CC9-C97C-479E-82E4-F9DEF839149C}"
11+
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1214
Debug|Any CPU = Debug|Any CPU
@@ -24,5 +26,9 @@ Global
2426
{AE300E49-FCCD-45D6-A32C-6E133148DF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
2527
{AE300E49-FCCD-45D6-A32C-6E133148DF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
2628
{AE300E49-FCCD-45D6-A32C-6E133148DF02}.Release|Any CPU.Build.0 = Release|Any CPU
29+
{652E2CC9-C97C-479E-82E4-F9DEF839149C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30+
{652E2CC9-C97C-479E-82E4-F9DEF839149C}.Debug|Any CPU.Build.0 = Debug|Any CPU
31+
{652E2CC9-C97C-479E-82E4-F9DEF839149C}.Release|Any CPU.ActiveCfg = Release|Any CPU
32+
{652E2CC9-C97C-479E-82E4-F9DEF839149C}.Release|Any CPU.Build.0 = Release|Any CPU
2733
EndGlobalSection
2834
EndGlobal

0 commit comments

Comments
 (0)